7 React Lessons I Wish I Knew Earlier

  Рет қаралды 50,577

Code Bootcamp

Code Bootcamp

Күн бұрын

Join the Bootcamp: reactbootcamp.dev
Chapters:
0:00 - React State Must Be Immutable
1:26 - Don't Use State for Everything
2:46 - Derive Values Without State
3:34 - Compute Values Without Effects
4:10 - Keys Should Actually Be Unique
5:00 - Don't Leave Out Dependencies
5:58 - Use useEffect Last
7:07 - Conclusion

Пікірлер: 67
@TheCodeBootcamp
@TheCodeBootcamp Ай бұрын
Correction (1:21) - First put the returned array from users.concat(newUser) in a new variable (i.e. newUsers). Then pass it to setUsers: setUsers(newUsers).
@Ayoubased
@Ayoubased Ай бұрын
i need to learn to read pinned first lol, beautiful video
@incarnateTheGreat
@incarnateTheGreat Ай бұрын
You beat me to it. Haha
@dvillegaspro
@dvillegaspro Ай бұрын
Using indexes as keys is not always a bad idea. If the set of items is known and never changing, there’s no reason you shouldn’t be able to use the index. It may be an anti-pattern in most cases but if you know when it is fine to use, just keep that in mind and do it.
@mustafawagih3429
@mustafawagih3429 Ай бұрын
Well that's what I thought. Then I found myself using them in multiple positions in the same app (rendering more than one list using indexes as keys). And I had that warning then a bug that it failed to render properly. There's no written rule that you can't, but only do it if you're doing it only once through the whole app.
@tianyili6336
@tianyili6336 Ай бұрын
@@mustafawagih3429Well, technically, you can. According to the definition of “Unique” - A key cannot be identical to that of a sibling component.
@sandunlasantha
@sandunlasantha Ай бұрын
Use ESLint and it would tell if the index is "OKAY" for the key or not
@coldicekiller1352
@coldicekiller1352 Ай бұрын
its important to know that UseEffect runs TWICE after mount, but only on dev enviroments with strict mode on. I learned that after hours of debugging...
@redragon9588
@redragon9588 15 күн бұрын
same, had to debug it to find the culprit :D
@kid1412621
@kid1412621 6 күн бұрын
What’s the reason?
@darkwoodmovies
@darkwoodmovies Ай бұрын
For the "Keys Should Actually Be Unique" part, the purpose of this is list ordering. E.g. if you use a non-data-derived `index` as the key and the list order changes, the renderer won't know and it will not update correctly. If your list is not changing order, it's fine to use an index. Also, it only needs to be unique per parent - so you can e.g. have identical keys in two separate lists rendering as long as those lists have a different parent.
@janglad9136
@janglad9136 Ай бұрын
6:41 I agree a simple fetch call in a useEffect is a naive approach and Tanstack query is great, however how do you think they implement this under the hood? Also using useEffect. Much in the same way it also starts requesting the data after the component renders.
@TheCodeBootcamp
@TheCodeBootcamp Ай бұрын
Correct, Tanstack Query doesn't fix all the problems of data fetching in React. It does have patterns like prefetching and suspense mode, however, which allow you to render-as-you-fetch. Every pattern has its tradeoffs.
@t_himmel6524
@t_himmel6524 Ай бұрын
i already know all of this right now, but i wish i saw this video 2 years ago. Btw thank you so so much. Keep it up ! Peace
@asemyamak3984
@asemyamak3984 27 күн бұрын
Loving the channel
@gmg15
@gmg15 Ай бұрын
5:51 i don’t recommend adding count to dependency array in this case.. as we can always use the previous value of the state inside setState and use that instead of directly using count
@MushrathChoudhury
@MushrathChoudhury 21 күн бұрын
Explain Please
@gmg15
@gmg15 21 күн бұрын
@@MushrathChoudhury setCount(prv => prv + 1 );
@Straight.Face.Serious
@Straight.Face.Serious 10 күн бұрын
​@@MushrathChoudhury You can pass a function to setState(). This function has the correct state value as a parameter. Instead of setCount(count + 1), you can do setCount((previousCount) => previousCount + 1). const [count, setCount] = useState(0); useEffect(() => { const intervalId = setInterval(() => { setCount((previousCount) => previousCount + 1); }, 1000); return () => clearInterval(intervalId) }, []);
Ай бұрын
Blowing app your project with extra libraries it is not good either. You do not really need, for instance, React Query to perform fetching data unless your case is very specific.
@SahilBhosale08
@SahilBhosale08 Ай бұрын
Insightful💡
@user-kg6bk5mv9g
@user-kg6bk5mv9g Ай бұрын
pleas manke this types of vlideo more it actualy help to understand concept very great
@savageteam354k4
@savageteam354k4 25 күн бұрын
hey men i really love the like your video it is deep and very helpful but right now i really struggle about file management like every time when i want to do some practice i always install react app again and again specially i am very confused by the installation of necessary files like nodemon , express ,node ,buble and run my file on terminal and like so on things really hard for me so can you make a tutorial video on how to handle files and folders, do we have to install every time when we want run our app or so many things please?!
@incarnateTheGreat
@incarnateTheGreat Ай бұрын
These are great! Thanks! Also, this feels like an advert for React Query. No complaints, though. ;)
@ColaKingThe1
@ColaKingThe1 Ай бұрын
That was a good video I liked it
@thefungigg7709
@thefungigg7709 Ай бұрын
The example at 1:21 doesn't work as well, you are not calling setUsers with the new array created from the concat metod so that example wont do anything just like the faulty example. To solve it use the result from the concat method as the argument in setUsers :)
@TheCodeBootcamp
@TheCodeBootcamp Ай бұрын
Thanks for catching that. Missed that in the edit. The spread operator example is correct though. Check my pinned comment
@KanishqSunil
@KanishqSunil Ай бұрын
Honestly, this person produces some of the cleanest videos on React concepts. I am amazed how he makes the videos look simple yet packs it with quality information. Keep it up 🫡
@farid9323
@farid9323 Ай бұрын
Love the tips here. Even an experienced dev can learn some things. But, I think useEffect is getting a bad rap. React was originally designed to fetch data after a component is rendered, so you'll always have some type of loading state, regardless of the library used. I wouldn't necessarily call that a "bad" UX. If you need the data earlier, then SSR is the way to go.
@TheCodeBootcamp
@TheCodeBootcamp Ай бұрын
If I'm using Next.js with app router, I like fetching data on the server in a React Server Component. If I need something more complex and across client components, I like Tanstack Query. I think each choice has its tradeoffs.
@leeroyjenkns5182
@leeroyjenkns5182 Ай бұрын
2:38 why shouldn't you use states for stuff that needs to be rendered tho Is it purely because of it's async nature or what
@AshishSingh-dq9fs
@AshishSingh-dq9fs 28 күн бұрын
dude, i just came across your channel, great content, can you increase the frequency of videos ?
@TheCodeBootcamp
@TheCodeBootcamp 22 күн бұрын
I'm on it!
@TheZayzoo
@TheZayzoo Ай бұрын
A video on suspense 👀?
@mayurpatel6657
@mayurpatel6657 Ай бұрын
Best explanation I have ever seen for React.❣
@LokeshKumar-tk7ri
@LokeshKumar-tk7ri Ай бұрын
We need more tutorials about DSA
@detaaditya6237
@detaaditya6237 Ай бұрын
Idk how I feel about "just use dedicated hooks to fetch data like swr, react query, or other library." It's alright to make the code work for now, but we introduce vendor lock-in to the project, a haunting tech debt that will lead us to long hours in the long run. However, I also agree that we shouldn't freely use the clunky-ass, hard to understand useEffect. To mediate this problem, I would introduce a context that contains the interface of "useDataFetcher," which is used by the components. The implementation is decided once at the top of the component tree, and this is where we the vendor hooks like swc and react-query are passed. It's not a perfect solution, as there is an extra layer of indirection now between the components and the vendor hooks, making it overkill for small projects. However, it will ease the whole process of migrating from one library to another.
@leelacreations
@leelacreations Ай бұрын
Could you please create a video on JavaScript Data Structures and Algorithms
@harsh_g2543
@harsh_g2543 Ай бұрын
what about fetching data in server side using nextjs and server actions
@TheCodeBootcamp
@TheCodeBootcamp Ай бұрын
I'll do some Next.js videos to cover that
@ArchNpm
@ArchNpm Ай бұрын
hi can u make a vid like this on NextJs
@selectronm2920
@selectronm2920 Ай бұрын
life is much easier with svelte
@JakeLuden
@JakeLuden Ай бұрын
Life is much easier when you just use react the way you’re supposed to use react
@sikritidakua
@sikritidakua Ай бұрын
rich harris is the goat
@Mohammad_Arafat_03
@Mohammad_Arafat_03 22 күн бұрын
Please do one for JavaScript too. You can't live React without JavaScript too. Waiting for it eagerly...
@muhammadshafain3529
@muhammadshafain3529 Ай бұрын
You seriously are very underrated.
@udaym4204
@udaym4204 Ай бұрын
next video on next js Thanks
@tomashubelbauer
@tomashubelbauer Ай бұрын
The thing about not using indexes for keys flat out is a bit silly and you're doing yourself a disservice if you take it at face value. This tip is very commonly shared as an axiom, but it is really not. In many cases, indexes are perfectly safe as keys, especially when the array you're rendering won't change or it will only grow at the end but not shuffle or grow at the beginning / in the middle.
@ecvetanov
@ecvetanov Ай бұрын
State must be immutable ... unless you are using a state management tool like mobx
@mohamedalkhyat3284
@mohamedalkhyat3284 Ай бұрын
Man, you don't even speak my language and I understood every word you said, thanks
@truthsayer9534
@truthsayer9534 Ай бұрын
JavaScript is the Wild West, thus the large number of frameworks people write to make JavaScript more usable.
@a.f4580
@a.f4580 20 күн бұрын
Please turn on the dark mode
@hwapyongedouard
@hwapyongedouard Ай бұрын
same bro , immutable mutable 🤷‍♂🤷‍♂🤷‍♀🤷‍♀😂😂
@ryanlog
@ryanlog Ай бұрын
nothing will happen at 1:14 either lol
@TheCodeBootcamp
@TheCodeBootcamp Ай бұрын
Typo on my part. See the pinned comment
@The-Funk35
@The-Funk35 Ай бұрын
I really don't understand why immutability was pushed so hard with React. It's JavaScript. It's single threaded. It can only perform a single action at a time. What race condition are we protecting against exactly?
@giorgikochuashvili3891
@giorgikochuashvili3891 16 күн бұрын
i think it has to do with virtual dom because when you mutate array or an object it still references the same address and virtual dom needs a new value to cause re render which only happens if you make a deep copy of the array\object
@anxpara
@anxpara Ай бұрын
Number 8: don't use react. The year is 2024, there are better options available
@dereksniper
@dereksniper Ай бұрын
Nextjs? Lol
@IlyaVelo
@IlyaVelo Ай бұрын
Angular
@chrisrock219
@chrisrock219 Ай бұрын
​@@dereksnipermumps
@jonashansen2512
@jonashansen2512 Ай бұрын
R19 use(…) hook & ;)
Every React 19 Feature Explained in 8 Minutes
7:35
Code Bootcamp
Рет қаралды 106 М.
6 State Mistakes Every Junior React Developer Makes
15:53
Lama Dev
Рет қаралды 262 М.
ELE QUEBROU A TAÇA DE FUTEBOL
00:45
Matheus Kriwat
Рет қаралды 28 МЛН
How I prepare to meet the brothers Mbappé.. 🙈 @KylianMbappe
00:17
Celine Dept
Рет қаралды 57 МЛН
Why Great Developers DON'T Create Content (and a lesson to learn)
6:56
Why Doesn’t Everyone Use This Animation???
23:59
Theo - t3․gg
Рет қаралды 96 М.
Building SaaS as a Software Engineer: Design Week
7:44
Andrew Peacock
Рет қаралды 8 М.
Stop Doing this as a React Developer
12:27
CoderOne
Рет қаралды 159 М.
The cloud is over-engineered and overpriced (no music)
14:39
Tom Delalande
Рет қаралды 369 М.
ALL React Hooks Explained in 12 Minutes
12:21
Code Bootcamp
Рет қаралды 62 М.
The Story of React Query
8:55
uidotdev
Рет қаралды 60 М.
How to Rewire Your Brain to Learn React
5:46
Code Bootcamp
Рет қаралды 3,9 М.
This is the Only Right Way to Write React clean-code - SOLID
18:23
The correct way to optimise React
11:29
Cosden Solutions
Рет қаралды 29 М.
ЭТОТ ЗАБЫТЫЙ ФЛАГМАН СИЛЬНО ПОДЕШЕВЕЛ! Стоит купить...
12:54
Thebox - о технике и гаджетах
Рет қаралды 142 М.
ПК с Авито за 3000р
0:58
ЖЕЛЕЗНЫЙ КОРОЛЬ
Рет қаралды 1,7 МЛН
iphone fold ? #spongebob #spongebobsquarepants
0:15
Si pamer 😏
Рет қаралды 610 М.
Will the battery emit smoke if it rotates rapidly?
0:11
Meaningful Cartoons 183
Рет қаралды 2,9 МЛН