DEV Community

Cover image for 3 Mistakes Junior Developers Make with React Function Component State

3 Mistakes Junior Developers Make with React Function Component State

Tyler Hawkins on July 20, 2020

A few weeks ago I wrote an article all about mistakes that developers sometimes make when working with React component state. All of the examples I...
Collapse
 
davidsanwald profile image
David Sanwald

I don't like the title at all.
There are no mistakes that are exclusive or specific to junior developers.
In fact there are so many senior developers that do not write better code than many junior developers.

Collapse
 
thawkin3 profile image
Tyler Hawkins

Very true! These are mistakes that anyone unfamiliar with React or with hooks may make.

Collapse
 
nicoh profile image
Nico Hevia • Edited

I understand your point and I share with you that generalization is bad and there is no a simple rule to say "This is Junior, this is Senior".

In this case, these 3 issues will be present to every person trying to learn React. Probably because they're not intuitive and people without knowledge of something will try to use logic to fill the gaps.
So I think there is some grey area where even if the title is correct, it could say something friendlier like "3 mistakes every person learning react (...)".

By the way, nice post!

Collapse
 
thawkin3 profile image
Tyler Hawkins

Totally. Phrasing can be hard. I'm going to leave the title as is on this one, but this is some great feedback to be aware of in the future, and I appreciate that.

Collapse
 
thomashighbaugh profile image
Thomas Leon Highbaugh

Maybe I am not as strong in this conviction as not liking the title at all, for Junior developers are at as much of a need for humility as everyone else writing code (which is why everyone should use Linux, it tears you down every time your head gets too big and in the middle of that huge problem you eat humble pie while clicking through an installer) but Dan is onto something in pointing out that there is something a little off about singling out Junior Developers with the title.

We all know, including you, that in reality these are mistakes that people just make in general, mostly because its never very well explained anywhere what the specific rules are, except in this well written article of course, but I think its more fair to exclude the experience based qualifier of Junior when a 20 year veteran of low level C programming is still liable to make the mistakes because she happens to not have noticed that in any documentation she read. The only thing that is true of Junior Developers specifically is the inclination to quit, which others might like for job security, but I think is a good reason to not target them for fear of discouraging them in a field where the rising tide lifts all ships in the harbor.

Collapse
 
tfrick47 profile image
Terri Fricker

Thank you! I am just learning React. Your article helped me to understand why it is done in a certain way. It's good to know the common mistakes right away, so I don't "practice" the wrong way for very long. I'll be on the lookout for these.

Collapse
 
thawkin3 profile image
Tyler Hawkins

You are welcome! Happy learning. :)

Collapse
 
danarj profile image
Danar

thanks a lot
your article just came to my rescue because I was working on a react project and I was doing all of these mistakes especially the first point I was modifying an array(hook) directly and wondering why the component wasn't updated accordingly.

Collapse
 
thawkin3 profile image
Tyler Hawkins

You’re welcome! Glad I could help. :)

Collapse
 
anilsansak profile image
Yaşar Anıl Sansak

Great article! Simple, yet effective. Thank you

Collapse
 
thawkin3 profile image
Tyler Hawkins

Thanks for reading!

Collapse
 
thomasburleson profile image
Thomas Burleson

3very good points.
On (1), you should explain why the setter and immutable data are needed in React.FC.

Collapse
 
thawkin3 profile image
Tyler Hawkins

Thanks, good suggestion! How's something like this:

As far as I understand it, the simplest way to explain why data should be immutable in React is that React components are functions of props and state, so when the diffing algorithm is deciding whether or not to update the UI for any given component, it compares the previous props and state with the current props and state.

So if you mutate the previous state, the comparison between the previous state and the current state will actually show that it's the same object reference with the same data, so it will incorrectly see that there's nothing new to show.

Collapse
 
thomasburleson profile image
Thomas Burleson

Exactly.
To paraphrase your reply.
1) Immutability means data modifications will result in new instances; so explicit comparisons are supported and deep-comparisons can be avoided.
2) The setter function also implicitly triggers the FC to asynchronously re-render. Without the setter, the data would be updated, but the FC would not redraw to reflect the current data state.

Collapse
 
bronxsystem profile image
bronxsystem

MOOAR. Thanks for taking the time to write this.

Collapse
 
thawkin3 profile image
Tyler Hawkins

You're welcome!

Collapse
 
ernesto15 profile image
Ernesto Angulo • Edited

I've been learning react for a month and I never realized I was making those mistakes, thank you a lot.

Collapse
 
thawkin3 profile image
Tyler Hawkins

You’re welcome! Keep on learning and being awesome.

Collapse
 
gabrieljosehernandez profile image
Gabriel HernΓ‘ndez

Good article, you pick up good points, thanks.

Collapse
 
thawkin3 profile image
Tyler Hawkins

Thank you Gabriel!

Collapse
 
justayush profile image
Ayush

I wasn't aware I was making these mistakes. Thanks for correcting Tyler.

Collapse
 
thawkin3 profile image
Tyler Hawkins

Sure thing! Learning more and getting better is what it’s all about.

Collapse
 
mrshawnhum profile image
Shawn Humphreys

Thank you for this refresher!

Collapse
 
thawkin3 profile image
Tyler Hawkins

You're welcome!

Collapse
 
yougotwill profile image
Will G

Great post, thank you!

Collapse
 
thawkin3 profile image
Tyler Hawkins

You’re welcome!

Collapse
 
mazharwhite profile image
mazharwhite

I just started learning React and this article helped me avoid these mistakes. Thank you.

Collapse
 
thawkin3 profile image
Tyler Hawkins

You're welcome! I'm glad this helped.