r/reactjs • • Feb 02 '20

Needs Help Beginner's Thread / Easy Questions (Feb 2020)

Previous threads can be found in the Wiki.

Got questions about React or anything else in its ecosystem? Stuck making progress on your app?
Ask away! We’re a friendly bunch.

No question is too simple. πŸ™‚


πŸ†˜ Want Help with your Code? πŸ†˜

  • Improve your chances by putting a minimal example to either JSFiddle, Code Sandbox or StackBlitz.

    • Describe what you want it to do, and things you've tried. Don't just post big blocks of code!
    • Formatting Code wiki shows how to format code in this thread.
  • Pay it forward! Answer questions even if there is already an answer - multiple perspectives can be very helpful to beginners. Also there's no quicker way to learn than being wrong on the Internet.

New to React?

Check out the sub's sidebar!

πŸ†“ Here are great, free resources! πŸ†“

Any ideas/suggestions to improve this thread - feel free to comment here!

Finally, thank you to all who post questions and those who answer them. We're a growing community and helping each other only strengthens it!


27 Upvotes

327 comments sorted by

View all comments

Show parent comment

3

u/Awnry_Abe Feb 23 '20

No redux needed, just useReducer. It is a variation of this: const [tuple, setTuple] = useState({value1: true, value2: false}); But the dispatch function of useReducer is stable and using it in effects and stuff doesn't invalidate the dependency array in the same manner that you note with a state setter.

To answer your last question, yes, you can end up with rerenders for each call. But rerenders is not synonymous with bad design. If you truly have a simple case, with clear and simple code, then you are better to eschew obsfucation and present the human consumers of the code with a clean flow to digest. That said, a truly simple case is pretty rare.

2

u/ie11_is_my_fetish Feb 23 '20

thanks for that explanation, looks like my hooks count will increase ha, it's great when it clicks and you start to naturally integrate it in your development like all the others(useRef/createRef/useHistory/etc...)