DEV Community

Discussion on: Difficulties Encountered with React Hooks

Collapse
 
dorshinar profile image
Dor Shinar • Edited

For the most part I think hooks are a game changer, but there's one area I wish could be improved - using Redux's useDispatch inside useEffect. ESLint (or better yet, the rules of hooks) enforce you to pass the dispatch object as a dependency, resulting in an effect that fires on every render.

mapDispatchToProps to the rescue!

Collapse
 
ggrassiant profile image
Guillaume Grassiant

Totally agree. Encountered the same issue too and it's annoying to manually disable the linter for this line.

Collapse
 
mungojam profile image
Mark Adamson

Does it work to get the dispatch method with usedispatch outside (possibly with a usecallback) and then you can pass dispatch in to the useEffect and that shouldn't then change every render. I think that's how you are meant to manage it

Collapse
 
dorshinar profile image
Dor Shinar

I guess it should work, but if you're going through so much trouble, mapDispatchToProps will probably be easier

Thread Thread
 
mungojam profile image
Mark Adamson

I have a strong preference towards ditching the container/component split as it's hard for new react Devs to pick up and navigate the code. I'm not sure that passing in an extra prop is too much effort, but it is subjective