7 React Lessons I Wish I Knew Earlier

  Рет қаралды 73,973

Code Bootcamp

Code Bootcamp

Күн бұрын

Пікірлер: 94
@TheCodeBootcamp
@TheCodeBootcamp 8 ай бұрын
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 8 ай бұрын
i need to learn to read pinned first lol, beautiful video
@incarnateTheGreat
@incarnateTheGreat 8 ай бұрын
You beat me to it. Haha
@darkhunter882
@darkhunter882 5 ай бұрын
6th example is a incorrect example and less performant one, the explanation is also wrong, but the advise is correct, same goes for 7th example too, tanstack query also uses useEffect, it just got abstracted away, again explanation is incorrect , but advise is good, this video has 60K views, so may be try to put a overlay text, so that your audience is not miss informed
@coldicekiller1352
@coldicekiller1352 8 ай бұрын
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 7 ай бұрын
same, had to debug it to find the culprit :D
@kid1412621
@kid1412621 7 ай бұрын
What’s the reason?
@karolbielen2090
@karolbielen2090 5 ай бұрын
@@kid1412621 It's a feature of Strict Mode, it's meant to encourage you to follow the guidelines and good practices
@IStMl
@IStMl 5 ай бұрын
@@karolbielen2090 it's meant to encourage you to implement the workarounds needed to fix React's own failures*
@dvillegaspro
@dvillegaspro 8 ай бұрын
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 8 ай бұрын
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 8 ай бұрын
@@mustafawagih3429Well, technically, you can. According to the definition of “Unique” - A key cannot be identical to that of a sibling component.
@sandunlasantha
@sandunlasantha 8 ай бұрын
Use ESLint and it would tell if the index is "OKAY" for the key or not
@janglad9136
@janglad9136 8 ай бұрын
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 8 ай бұрын
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.
@darkwoodmovies
@darkwoodmovies 8 ай бұрын
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.
@gmg15
@gmg15 8 ай бұрын
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
@NamesAreVacuous
@NamesAreVacuous 7 ай бұрын
Explain Please
@gmg15
@gmg15 7 ай бұрын
@@NamesAreVacuous setCount(prv => prv + 1 );
@Straight.Face.Serious
@Straight.Face.Serious 7 ай бұрын
​@@NamesAreVacuous 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) }, []);
@karolbielen2090
@karolbielen2090 5 ай бұрын
Althought what you wrote is true, keep in mind this is just a very simple example. In a real world case you caould be using a completely different state variable or some derived value.
@thefungigg7709
@thefungigg7709 8 ай бұрын
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 8 ай бұрын
Thanks for catching that. Missed that in the edit. The spread operator example is correct though. Check my pinned comment
@KanishqSunil
@KanishqSunil 8 ай бұрын
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 🫡
@Dgiulian
@Dgiulian 5 ай бұрын
The useEffect code at 5:48 will be constantly setting and clearing intervals. Might as well use a timeout for that. A better approach would be to keep the dependencies array empty and use function to update the state setCount(oldCount =>oldCount +1).
@detaaditya6237
@detaaditya6237 8 ай бұрын
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.
@leeroyjenkns5182
@leeroyjenkns5182 8 ай бұрын
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
@IStMl
@IStMl 5 ай бұрын
bc it's unnecessary. If it will be rendered, it will be recalculated on render anyway
@foodies292
@foodies292 7 ай бұрын
what a god tier video, i even not understand a react basic until i watch this video. great video!
@t_himmel6524
@t_himmel6524 8 ай бұрын
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
@KevinLopez-rl6wq
@KevinLopez-rl6wq Ай бұрын
React Router 6.4 data loaders allow you to fetch data on the route level, so that is another approach to consider alongside solutions such as Tanstack Query and SWR.
@JohnPywtorak
@JohnPywtorak 4 ай бұрын
Good points and summary; However, the useEffect with a fetch does allow the component to render and TanStack Query under the hood uses useEffect. Sure it should be used for other benefits, but implying at the end that useEffect prevents rendering is not accurate.
@asemyamak3984
@asemyamak3984 8 ай бұрын
Loving the channel
@calebclawrence
@calebclawrence 6 ай бұрын
It said the component will rerender when the props change but I think a component only renders when a parent component renders due to a state change. Props changing does not cause a re render right?
@IStMl
@IStMl 5 ай бұрын
indeed
@farid9323
@farid9323 8 ай бұрын
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 8 ай бұрын
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.
@incarnateTheGreat
@incarnateTheGreat 8 ай бұрын
These are great! Thanks! Also, this feels like an advert for React Query. No complaints, though. ;)
@TheZayzoo
@TheZayzoo 8 ай бұрын
A video on suspense 👀?
@savageteam354k4
@savageteam354k4 7 ай бұрын
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?!
@AshishSingh-dq9fs
@AshishSingh-dq9fs 8 ай бұрын
dude, i just came across your channel, great content, can you increase the frequency of videos ?
@TheCodeBootcamp
@TheCodeBootcamp 7 ай бұрын
I'm on it!
@harsh_g2543
@harsh_g2543 8 ай бұрын
what about fetching data in server side using nextjs and server actions
@TheCodeBootcamp
@TheCodeBootcamp 8 ай бұрын
I'll do some Next.js videos to cover that
@sumanthachark
@sumanthachark Ай бұрын
Can anybody share your experience of his bootcamp!?
@Terminatechopera
@Terminatechopera 8 ай бұрын
pleas manke this types of vlideo more it actualy help to understand concept very great
@Mohammad_Arafat_03
@Mohammad_Arafat_03 7 ай бұрын
Please do one for JavaScript too. You can't live React without JavaScript too. Waiting for it eagerly...
@leelacreations
@leelacreations 8 ай бұрын
Could you please create a video on JavaScript Data Structures and Algorithms
@selectronm2920
@selectronm2920 8 ай бұрын
life is much easier with svelte
@JakeLuden
@JakeLuden 8 ай бұрын
Life is much easier when you just use react the way you’re supposed to use react
@sikritidakua
@sikritidakua 8 ай бұрын
rich harris is the goat
@IStMl
@IStMl 5 ай бұрын
@@JakeLuden Using React the way you're supposed to is much more cumbersome than using Solid or Svelte
@tomashubelbauer
@tomashubelbauer 8 ай бұрын
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.
@IStMl
@IStMl 5 ай бұрын
Conclusion: I can't wait for Solid to become the standard
@raghavenderkuppireddy7158
@raghavenderkuppireddy7158 2 күн бұрын
Awesome 👌
@shervangh9660
@shervangh9660 6 ай бұрын
please make video like this for next js 14 before all thanks for your videos
@SahilBhosale08
@SahilBhosale08 8 ай бұрын
Insightful💡
@ColaKingThe1
@ColaKingThe1 8 ай бұрын
That was a good video I liked it
@ArchNpm
@ArchNpm 8 ай бұрын
hi can u make a vid like this on NextJs
@LokeshKumar-tk7ri
@LokeshKumar-tk7ri 8 ай бұрын
We need more tutorials about DSA
@mayurpatel6657
@mayurpatel6657 8 ай бұрын
Best explanation I have ever seen for React.❣
@muhammadshafain3529
@muhammadshafain3529 8 ай бұрын
You seriously are very underrated.
@ryanlog
@ryanlog 8 ай бұрын
nothing will happen at 1:14 either lol
@TheCodeBootcamp
@TheCodeBootcamp 8 ай бұрын
Typo on my part. See the pinned comment
@ecvetanov
@ecvetanov 8 ай бұрын
State must be immutable ... unless you are using a state management tool like mobx
8 ай бұрын
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.
@calebclawrence
@calebclawrence 6 ай бұрын
React query provides so many cool benefits like the stale while revalidate pattern or whatnot. I'd use it in every project.
@udaym4204
@udaym4204 8 ай бұрын
next video on next js Thanks
@a.f4580
@a.f4580 7 ай бұрын
Please turn on the dark mode
@hwapyongedouard
@hwapyongedouard 8 ай бұрын
same bro , immutable mutable 🤷‍♂🤷‍♂🤷‍♀🤷‍♀😂😂
@darkhunter882
@darkhunter882 5 ай бұрын
6th example is a incorrect example and less performant one, the explanation is also wrong, but the advise is correct, same goes for 7th example too, tanstack query also uses useEffect, it just got abstracted away, again explanation is incorrect , but advise is good
@truthsayer9534
@truthsayer9534 8 ай бұрын
JavaScript is the Wild West, thus the large number of frameworks people write to make JavaScript more usable.
@mohamedalkhyat3284
@mohamedalkhyat3284 8 ай бұрын
Man, you don't even speak my language and I understood every word you said, thanks
@JaredFL
@JaredFL 5 ай бұрын
Not sure why you keep saying it's bad to use useEffect to fetch data and to use libraries instead. They use useEffect under the hood - It's just abstracted. Saying this to junior devs and not clarifying that is kind of pathetic imo.
@The-Funk35
@The-Funk35 8 ай бұрын
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 7 ай бұрын
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
@IStMl
@IStMl 5 ай бұрын
because React can't track such changes for reconciliation. The culprit is the concept of VDOM. Biggest mistake the React team did. If you want React without the immutability bs you can use SolidJS.
@The-Funk35
@The-Funk35 5 ай бұрын
@@giorgikochuashvili3891 that makes sense.
@marccawood
@marccawood 4 ай бұрын
These hangups show just how terribly React is designed. We’re all learning it because it’s big not because it’s good. These frameworks promise but don’t deliver 2-way data binding in anything but the most trivial primitive examples.
@pritisharma9951
@pritisharma9951 6 ай бұрын
Pls make in Hindi language
@DE4DP00L-cs1ts
@DE4DP00L-cs1ts 5 ай бұрын
When will you learn english, you know coding requires english
@IStMl
@IStMl 5 ай бұрын
why should he learn Hindi just for you
@anxpara
@anxpara 8 ай бұрын
Number 8: don't use react. The year is 2024, there are better options available
@dereksniper
@dereksniper 8 ай бұрын
Nextjs? Lol
@IlyaVelo
@IlyaVelo 8 ай бұрын
Angular
@chrisrock219
@chrisrock219 8 ай бұрын
​@@dereksnipermumps
@IStMl
@IStMl 5 ай бұрын
@@dereksniper Solid, the code is basically React without the bs
@jonashansen2512
@jonashansen2512 8 ай бұрын
R19 use(…) hook & ;)
How to Rewire Your Brain to Learn React
5:46
Code Bootcamp
Рет қаралды 15 М.
ALL React Hooks Explained in 12 Minutes
12:21
Code Bootcamp
Рет қаралды 176 М.
Гениальное изобретение из обычного стаканчика!
00:31
Лютая физика | Олимпиадная физика
Рет қаралды 4,8 МЛН
Quando A Diferença De Altura É Muito Grande 😲😂
00:12
Mari Maria
Рет қаралды 45 МЛН
How to Start An Online AI Business In 2025
9:58
Jesse Cunningham
Рет қаралды 2,7 М.
This is the Only Right Way to Write React clean-code - SOLID
18:23
Every React 19 Feature Explained in 8 Minutes
7:35
Code Bootcamp
Рет қаралды 149 М.
React vs Angular In 2025
8:23
Impekable
Рет қаралды 6 М.
Why Great Developers DON'T Create Content (and a lesson to learn)
6:56
JavaScript Visualized - Event Loop, Web APIs, (Micro)task Queue
12:35
React Query tips from the maintainer @tkDodo
16:19
Andrew Burgess
Рет қаралды 27 М.
The Most Underrated State Management Tool in React
23:35
Cosden Solutions
Рет қаралды 20 М.
The Story of React Query
8:55
ui․dev
Рет қаралды 116 М.
Гениальное изобретение из обычного стаканчика!
00:31
Лютая физика | Олимпиадная физика
Рет қаралды 4,8 МЛН