Cofounded Host Collective (DiscountASP.net). Cofounded Player Axis (Social Gaming). Computer Scientist and Technology Evangelist with 20+ years of experience with JavaScript!
Thanks Eranda! Seems like it doubles the number of added key listeners with each press and soon the application stops responding.
Which means the answer is to remove keyListeners and clean up useEffect an some point? Not sure how, I've reached the limit of my Hooks understanding 😜
When we add itWorks as a dependency to useEffect, It will re-render for each change of itWorks value. So here it will cause the number of event listeners to multiply at each change. So as @Vesa Piittinen suggests it is a good idea to remove the listener if you are adding it in the useEffect hook.
This looks like an issue with stale values inside of
useEffect
.Make this change:
I have created a video on this topic here:
Cheers 🍻
Thanks Joel! :)
Thanks for the insights! With these corrections both methods work indeed!
Is there a reason to prefer one over the other?
This might work. But haven't tested though.
Thanks Eranda! Seems like it doubles the number of added key listeners with each press and soon the application stops responding.
Which means the answer is to remove keyListeners and clean up useEffect an some point? Not sure how, I've reached the limit of my Hooks understanding 😜
When we add
itWorks
as a dependency to useEffect, It will re-render for each change ofitWorks
value. So here it will cause the number of event listeners to multiply at each change.So as @Vesa Piittinen suggests it is a good idea to remove the listener if you are adding it in the useEffect hook.
You still want to remove the event listener on unmount in the second example though!
Thank you! Makes sense.
Thanks for the explanation! I appreciate it.