All 17 React Best Practices (IMPORTANT!)

Поделиться
HTML-код
  • Опубликовано: 8 сен 2024

Комментарии • 145

  • @trixn4285
    @trixn4285 Месяц назад +242

    We banned almost all margins from our styles and it is a blessing. It's (almost) always a bad Idea to add a margin to a component to "create spacing". When there needs to be space between components we always use flex containers with a gap defined between the items. We found that this is very consistent with how a designers thinks about the design and it makes components easily have different spacing in different contexts. The spacing between items should always be defined be the parent, not by the items themself.

    • @TheDiegolopez007
      @TheDiegolopez007 Месяц назад +5

      That's a very, very interesting argument. I'll have to dig deeper into that because I have run into issues due to margins.

    • @hoaxygen
      @hoaxygen Месяц назад +5

      I do this and it's so effective.

    • @LuteroFeliz
      @LuteroFeliz Месяц назад +11

      This concept of ditching the margins from HTML I believe was first made popular by Max Stoiber in 2020 in the article "Margin considered harmful", a read which I recommend to anyone interested in the idea. There's also a video by Theo Browne, former Twitch developer, titled "The Horror of Margins in CSS" in which he ellaborates a bit more on the problems of margin, and Adam Argyle's (Chrome CSS Developer Advocate) prediction that the usage of margin will decline as the gap property becomes more widely adopted in all-flexbox-and-grid situations. Highly recommend these.

    • @Brunoenribeiro
      @Brunoenribeiro Месяц назад +4

      Agreed! Spacing is a parental task 😁

    • @trixn4285
      @trixn4285 Месяц назад +3

      @@LuteroFeliz Good pointers, must read for people that need to implement reusable components. A margin is basically a side-effect that breaks composability and react is all about composability. We have yet to encounter a layout requirement that can't be implemented using just padding and flex/grid + gap. It becomes second nature fast and you will almost guaranteed not look back.

  • @Khoaky
    @Khoaky 25 дней назад +10

    This is by far the best practical educational video I’ve ever watched. I’m a senior CS major, and if I had videos like this sooner, I’d have 20x the experience I need.

  • @friedricht3908
    @friedricht3908 Месяц назад +57

    Very nice video, ByteGrad. What about making a video on how you test your react & nextjs applications ?

  • @bahramiwd4812
    @bahramiwd4812 Месяц назад +11

    RUclips lacks these kinds of videos! Because they're so awesome! 😃 Good job ByteGrad!

  • @mmmhbarcelona4560
    @mmmhbarcelona4560 Месяц назад +12

    I'm going to get a job as a front end developer and I wanted this video exactly right now, thanks man!

    • @okkashaally2115
      @okkashaally2115 Месяц назад

      How did it go buddy?

    • @darelbvcr687
      @darelbvcr687 29 дней назад +1

      tech market sucks atm m8, good luck tho

    • @mmmhbarcelona4560
      @mmmhbarcelona4560 11 дней назад

      @@okkashaally2115 Not that great, i sent my resume to 5 or 6 companies and half of them rejected it, and half of them didn't even read. And the scary part is my university is going to start very soon. i don't know what to do...

  • @roberto9369
    @roberto9369 Месяц назад +8

    wow. this is useful even if you have years in this. i have 8 years developing, I'm considered senior in my job, and this tips are very valuable, accurate and helpful. thanks

  • @rjwhite4424
    @rjwhite4424 Месяц назад +5

    This video was awesome. I didn’t even notice that it was over an hour I was so interested. Can’t wait to try and put these in practice.

  • @arturkunzmindset
    @arturkunzmindset 25 дней назад +2

    20:31 about making the main tag and the div surrounding everything, a component: You could make a component, that takes childelements and displays them, so that you can still have the internal stuff in the App.tsx file.

  • @aj_mints8973
    @aj_mints8973 Месяц назад +12

    As a Jr dev that came from a boot camp, I really appreciate this advice. The library folder with your utils, types, and hooks is a new concept to me. Learning about the Children pattern to avoid prop drilling is an idea I never knew about. I saw {children} being used in applications but never understood it before. Still got half way to go in the video, but I really appreciate your advice so far! The application I have been building for the past few months will benefit greatly from these ideas!

    • @LuteroFeliz
      @LuteroFeliz Месяц назад +2

      Good luck on your journey learning React!

    • @Alexander_dev
      @Alexander_dev Месяц назад +1

      Check out Feature-Sliced ​​Design (Architectural methodology for frontend projects). Design patterns: compound components, render props.

    • @nicholas6497
      @nicholas6497 Месяц назад

      Simply just looking at the source code of well-respected open source projects (e.g. the Node.js official website) helped me to learn immensely. A lot of times when I implement a new feature I do searches of terms or packages on GitHub to see how other people do it (e.g. I did this for the web-vitals library recently - how do others implement that package?). Then you can take the parts you like from how others do it and fit it to your own needs.

  • @mzafarr
    @mzafarr Месяц назад +3

    Loved it! Need more "best practices videos" about different stuff. Thanks!

  • @joe5head
    @joe5head Месяц назад +1

    Another one is using a progression of multiple useState-> single useState object -> useReducer to manage a component that grows in complexity.

  • @tomasburian6550
    @tomasburian6550 Месяц назад +4

    Good stuff, even for more senior devs.
    I can't imagine coding anything without TS. Still very surprised someone out there makes tutorials without it.

    • @jasonwhittaker3940
      @jasonwhittaker3940 Месяц назад +1

      Typescript can be a pain sometimes, when you are trying to get something out the way, you want to scream leave me alone; but it improves yourself as a developer as you add an extra layer to how you think when you are creating something. Like yourself, I too get frustrated when I see tutorials without it.

    • @tomasburian6550
      @tomasburian6550 Месяц назад

      @@jasonwhittaker3940 When you're working in a team on a bigger project, I'd say TS is essential. I was just helping out on a project that was written only in JS and it was hell, debugging was a true ordeal and without TS you don't even have fully functioning intellisense, so it's good to use it imho.

  • @jasonwhittaker3940
    @jasonwhittaker3940 Месяц назад +2

    Would love to see a video on good coding patterns to use in React or Next and also coding principles, like SOLID and more

  • @chess4964
    @chess4964 Месяц назад

    On components which is topic number 3, for the main tag which is the container of the different components (Header, TodoList and Sidebar) you can also create a new component for it and just put it on the same file, just pass the 3 sub components as children so it is still visible, and cleaner to read.

  • @mohdsahil226
    @mohdsahil226 7 дней назад +1

    Best content!, I have learnt a lot! Thanks😀
    just one question
    if a parent component re-renders, the child component will also re-render. How can a children pattern prevent this behavior? Would you please explain? That would be a great help!

  • @olileach7536
    @olileach7536 21 день назад +1

    The level of this course is perfect. Simply explained but covers the detail needed. Do we have github repo available so we can look at the code?

  • @larrytron1992
    @larrytron1992 19 дней назад +1

    There were some really useful advice in video 👍 out of all the front end frameworks I've had experience with, React is by far my favourite

  • @the_fallen_knight5596
    @the_fallen_knight5596 10 дней назад

    hi, you can use import classnames from 'classnames'; its a function that allows to merge classnames just like your cn function

  • @googlemani
    @googlemani 25 дней назад +1

    Great content. Learned a lot. Thanks for the video, cheers.

  • @LuteroFeliz
    @LuteroFeliz Месяц назад +1

    Some nice refreshers here, even for a seasoned developer. Oftentimes one might forget some patterns if one stays away from React for enough time. And the section on performance optimization is also valuable. Hopefully React will eventually streamline most of these manual memoization hooks and dependency arrays. They've always been a pain for everyone.

  • @iamparmjeetmishra
    @iamparmjeetmishra Месяц назад +1

    Amazing Guide to all newbies. Thank you so much.

  • @EmiliyanTodorov-h1w
    @EmiliyanTodorov-h1w 15 дней назад +1

    you give a lot of food for thought

  • @seelvek6550
    @seelvek6550 19 дней назад +1

    Thank you Wesley! Very much appreciated! 🙇

  • @ahsanmughal3806
    @ahsanmughal3806 Месяц назад +1

    Amazing. I want more best practices like this.

  • @martinharyanto4465
    @martinharyanto4465 Месяц назад

    This is real gold. Thanks for explaining this to us and showing every best practices with example. This is very helpful in may ways. ❤👍

  • @kim92se64
    @kim92se64 Месяц назад +1

    Sir, You make always a great tutorial ! Awesome work

  • @dysper971
    @dysper971 Месяц назад +1

    Thank you for this video!!!
    It is very practical.
    I like the way you explain things. More videooos

  • @olusanyaolamide9764
    @olusanyaolamide9764 Месяц назад +1

    Thanks Byte Grad for your contents

  • @AR-gx5yk
    @AR-gx5yk 19 дней назад +1

    Thanks for this.
    great list

  • @sanchitbajaj02
    @sanchitbajaj02 3 дня назад +1

    Great video, btw what VS Code theme is this?

  • @ThisIsMonta
    @ThisIsMonta Месяц назад +6

    0:05 we really need to do what ?

  • @saveriomazza7781
    @saveriomazza7781 Месяц назад +1

    the kind of videos that are really useful!

  • @cslearn3044
    @cslearn3044 Месяц назад +3

    Your voice sounds great ngl

  • @regilearn2138
    @regilearn2138 Месяц назад +4

    please consider REACT UNIT TESTING also your future videos

  • @oussamaboumaad4613
    @oussamaboumaad4613 28 дней назад

    if you have flex use gap, easy tip to add spacing between components. no need for extra coding or anything.

  • @echuderewicz
    @echuderewicz 25 дней назад

    Thanks. Your explanations are clear and helpful.

  • @HemstitchedIrony
    @HemstitchedIrony Месяц назад

    Another option for #13 is just keeping track of which item is selected with a boolean inside the primary state, such as adding active: true to the selected object, especially if you are keeping track of multiple selected items, little more complex but a good solution compared to using an array of Id's. Great video, very informative.

  • @napoleonborntoparty5437
    @napoleonborntoparty5437 27 дней назад

    1:35:43 by the way conditional display of StartScreen component better to move from view to separate variable in component

  • @MrArod1207
    @MrArod1207 Месяц назад +1

    Great video, thank you!

  • @personalGoogle
    @personalGoogle 12 дней назад

    One questions to the H1 class issue chapter 5:
    I’ve always used template literals to add classname props like

  • @aymenbachiri-yh2hd
    @aymenbachiri-yh2hd Месяц назад +1

    Thank you so much

  • @caceresjuan
    @caceresjuan Месяц назад +1

    Really good content man!

  • @anastasiosstefanou9658
    @anastasiosstefanou9658 Месяц назад +1

    Great content!

  • @27sosite73
    @27sosite73 Месяц назад +1

    thank you, mate

  • @osmanogluenes
    @osmanogluenes Месяц назад +1

    Great video, thanks 🔥

  • @theoriginators1882
    @theoriginators1882 Месяц назад +1

    Awesome video, loved it :)

  • @vramv9999
    @vramv9999 Месяц назад +1

    Thanks

  • @TakeOnMe5
    @TakeOnMe5 17 дней назад

    1:03:56 As we learned from you before, it would probably be better to use [todos.length], due to the value / reference difference, right?

  • @moofymoo
    @moofymoo Месяц назад +2

    nice to see how generic programming best practices translates to react because react components are just functions.

  • @MiladJoodi
    @MiladJoodi Месяц назад +1

    Nice, Thank a lot.

  • @flavienbernard8132
    @flavienbernard8132 Месяц назад +1

    This video is a real gem! Thanks for all the tips! It will help a lot of people to use cleaner practices.

  • @-ARahulAkubattini
    @-ARahulAkubattini Месяц назад +1

    At 32:24 can't we use back ticks `${}` instead of seperate utility function ?

    • @Elias-zn6og
      @Elias-zn6og Месяц назад

      I had the same question, but I think it's not going to work to pass className props to tailwind className.

  • @sa4ita
    @sa4ita Месяц назад

    1:25:41 Not sure whether it is a good idea to use array (reference data type) as dependency in useEffect

  • @couragic
    @couragic Месяц назад +2

    My first thought was “why React 17? (Not 19)” 😊

  • @azhardev9641
    @azhardev9641 Месяц назад +1

    Nice guide. I mean I know it is gonna be nice.

  • @Nguyenang-mo7tw
    @Nguyenang-mo7tw Месяц назад +1

    What theme you use

  • @josephito27
    @josephito27 Месяц назад

    Love your content man

  • @ramiov3862
    @ramiov3862 Месяц назад

    Great video,
    but in 1:24:00 i am confused about the todos in the useEffect depndency array
    todos is an array meaning its an object type not a primative type
    and my understanding is useEffect can know if primative value chnaged but cannot know if a object value chnaged
    so it will always run on each render in this case sense the todos array is an object type not a primative type
    please correct me if i am wrong
    and keep up the great work ❤

  • @Applecitylightkiwi
    @Applecitylightkiwi 18 дней назад

    I have a questions. Is it possible that in the H1 component destructure className = ‘ ‘ like this and pass it into the other tsx file ? 33:20

  • @u9s0e9r
    @u9s0e9r 18 дней назад

    What if instead of creating a button component you just create a style in css? I think it makes more sense? The buttons do have the same design but their usage differ, so I would assume it’s the case of creating a css class to button…?

    • @owaisahmed7820
      @owaisahmed7820 13 дней назад

      Yes, it's mainly css which handle designs but you have different variants of buttons and conditionally apply classes on button. We have variants such as style, size, icons etc

  • @rsajdok
    @rsajdok Месяц назад +1

    worth watching

  • @deepmane5845
    @deepmane5845 Месяц назад

    nextJs + Rtk = serverside or client side video please
    if we dont use rtk how to write code for CRUD in Nextjs for same app
    if we use rtk how to write code for CRUD in Nextjs for same app
    what is diffrence how to deal mega app in Nextjs

  • @waleedsharif618
    @waleedsharif618 Месяц назад

    If you make everything its own components then when you want to test them for example using React Testing Library then there are too many components to test ? Wouldnt it be more complicated to test ?

  • @XxbankerboomxX
    @XxbankerboomxX Месяц назад

    At 55:41 did you mean to put the form event in the arguments and not todocontent?

  • @roberti1290
    @roberti1290 Месяц назад

    Isn't it better to have a folder of them? For example, when I do nextjs projects, I create a folder called actions in that directory with all actions related to that route, is that good a practice?

  •  Месяц назад

    No github links in description? That's like the most important thing you can do.

  • @yashsolanki069
    @yashsolanki069 Месяц назад

    At 21:00 i see that we are using inline styles but doesn't it them makes it difficult to fix something if a component is deeply nested and on the devtools we just see styles defined but don't know in code where the component is. Is there a way better way to manage tailwind??

  • @ashmitsharma9096
    @ashmitsharma9096 Месяц назад +1

    1:09:12 short recap

  • @napoleonborntoparty5437
    @napoleonborntoparty5437 27 дней назад

    46:49 props drilling not so bad, because we still have readability, on other side we put everything as children which looks like awful…Am I wrong?

  • @TheScottShepard
    @TheScottShepard Месяц назад

    What’s wrong with using a global CSS file for things like h1? Then you can just add className without all the machinery. Why do Tailwind users seem to avoid all css? What’s the science or philosophy with these practices? Thanks!

  • @diamantisufi7938
    @diamantisufi7938 Месяц назад

    Hi man! What are you using for AI autocomplete?

  • @aurelienperia7082
    @aurelienperia7082 Месяц назад

    Hello Guys, at 7.55 we can see he auto import the variable "max free todos". Can someone tell me how we do that ? Tanks.

  • @user-A253
    @user-A253 День назад

    58:00

  • @bossgd100
    @bossgd100 Месяц назад +1

    Cool 🔥

  • @CptSnunu-ii4um
    @CptSnunu-ii4um Месяц назад

    Is the classname needed to be so verbose or is best practice to leave it verbose instead of moving all the style to another file?

  • @dataquery
    @dataquery 12 дней назад

    I love u broooo

  • @SunAndMoon-zc9vd
    @SunAndMoon-zc9vd 27 дней назад

    Why do we still use , a submit button, and e.preventDefault() in web development? Why not ommit the and just use regular click event?

  • @sinanyilmaz9887
    @sinanyilmaz9887 Месяц назад

    Why do you use typescript in a tutorial video without using its features?

  • @rodrigonovais9624
    @rodrigonovais9624 Месяц назад +1

    1:18:18 Show me the code, man

  • @Anteater23
    @Anteater23 Месяц назад

    Use react query.

  • @rambosweat
    @rambosweat Месяц назад

    avoiding constants and hard-coded values are just basic programming principles, and not really much to do with react best practices.

  • @quvomiddinkamalov3292
    @quvomiddinkamalov3292 Месяц назад +1

    3.000th like❤

  • @blarvinius
    @blarvinius 10 дней назад

    DO REPEAT YOURSELF I appreciate that you repeat yourself explaining things 🤯

  • @CptSnunu-ii4um
    @CptSnunu-ii4um Месяц назад

    Semaphore is interesting but I'd rather keep my data private instead of sharing for free to a third party

    • @antidegenerates7449
      @antidegenerates7449 Месяц назад

      No one needs your no customers data lol. So you could enjoy your SQL tables by yourself

  • @kalvikaring1304
    @kalvikaring1304 Месяц назад +7

    best practice is to try not to use react

    • @antidegenerates7449
      @antidegenerates7449 Месяц назад

      Like there’s a real alternative 🤡 Vue ecosystem is pathetic and tiny (unless yoy Chinese), Svelte is niche, HTMX is a joke

    • @Edgar-pu1lc
      @Edgar-pu1lc Месяц назад +1

      React the best

    • @MrMikomi
      @MrMikomi 20 дней назад

      Smh

  • @0xpatrakar
    @0xpatrakar Месяц назад

    Nope

  • @vitya.obolonsky
    @vitya.obolonsky Месяц назад

    AI is sucks 🥵🥵🥵

  • @bradyfractal6653
    @bradyfractal6653 22 дня назад

    Using React is a bad practice