Refactoring a React Component (Design Patterns)

Поделиться
HTML-код
  • Опубликовано: 21 ноя 2024
  • Try Brilliant Free for 30 days + 20% Off Premium Membership → brilliant.org/...
    🚀 Project React → cosden.solutio...
    📥 Import React (Newsletter) → cosden.solutio...
    Source Code → github.com/cos...
    Join The Discord! → discord.cosden...
    VSCode Theme | Font → Material Theme Darker | Menlo, Monaco "monospace"
    In this video I will show you how to refactor a React component using design patterns. We are going to take a complex and messy component, and refactor it to make use of reusable components, custom hooks, and efficient senior-level React code!

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

  • @jaimishtrivedi392
    @jaimishtrivedi392 3 месяца назад +17

    In the last... The TextInput component you were using were actually wrapped inside div, and if you pass className 50% to input, you would get the half width of that div, previously you were directly using inputs inside parent div, you have to give 50% width to align those two inputs. But now you don't need it, or you have to provide full width 👍

  • @rodicabalan6565
    @rodicabalan6565 3 месяца назад +5

    We need more refactoring videos! Thanks for the effort❤

  • @MickDavies
    @MickDavies 3 месяца назад +4

    Coming from Vue since 2017 and having to upskill in React this year for work, loving your tutorials! The tempo is perfect for me and learned a few new tricks such as the ComponentProps and just love watching how others refactor, it's sped up my React journey learning this way.

    • @teknolovedigital
      @teknolovedigital 3 месяца назад

      Why you switch from vue to react?

    • @MickDavies
      @MickDavies 3 месяца назад

      @@teknolovedigital companies and that was the new tech stack. Nextjs + react. Good to learn new stuff, Vue is superior but I feel confident in both now which is always good for job prospects. I've been doing this for a while now... 15 odd years

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

    We need more videos like that one!

  • @danieldefoe2981
    @danieldefoe2981 3 месяца назад +3

    Hi, Cosden, thank you for your videos. I want to point out that in 10:05 you should've used a generic instead of any. Just make your component a generic component and pass generic value to the Props

  • @SK_Covers
    @SK_Covers 3 месяца назад +1

    Broo ❤❤❤
    Just watched your React hook form + zod video. Very clear very concise, very understanding, straight to the point.
    At last it's very very beginner friendly 💯😎🔥
    Love from India ❤

  • @dr_jacko
    @dr_jacko 3 месяца назад +5

    1 minor niggle with this is that your TextInput is closely coupled with react-hook-form. If I were approaching this, I would either create a TextInput with more generic handlers and values and pass in the relevant functions and values or rename the component to RhfTextInput or similar.

    • @cosdensolutions
      @cosdensolutions  3 месяца назад +1

      Fair, I found myself rarely needing a text input without an attached form in a project, but if you do then yeah definitely

    • @TannerBarcelos
      @TannerBarcelos 3 месяца назад

      @@cosdensolutionsgreat counterpoint. When I take a step back and think about it, all of my inputs in the products I work on are in a form for proper semantic html, so I’d use this approach as well.
      It would also enforce consistency in the codebase by forcing others to not only use the reusable component, but always remember to rely on RHF wherever they need to build features that require text inputs.
      QQ: Have you looked into Tanstack Form? It looks amazing but I’ve yet to try it as it’s not production ready. Once it is, I want to migrate off basic forms and inputs in my product at work to use TSF. (I don’t even use RHF now because of this exact reason; I want to use TSF and don’t want to do 2 refactors so I decided to not use a form library at all up front)

  • @MattElisa97
    @MattElisa97 3 месяца назад

    I love this style of code refactoring video. Just a tiny bit slower and it would be perfect. But I love it !! thanks

  • @royangagas2519
    @royangagas2519 3 месяца назад +1

    Very clear explanation, I love it

  • @nikawuladze953
    @nikawuladze953 3 месяца назад +1

    This type of videos are sk useful. Ty for that ❤ .

  • @tomvj15
    @tomvj15 3 месяца назад +2

    Your videos are very easy to understand I like your way of Teaching and I would like to enroll your "Project React" course, I am from India right now i don't have a full amount for this course did I get any coupon code from your "Cosden Solution" it will help me lot , Thanks for providing a wonderful content about
    React keep rocking....!

  • @ericng3673
    @ericng3673 3 месяца назад +2

    Instead of passing control, usually I prefer using useFormContext and add a FormProvider. This doesn't work well if you have multiple forms components as siblings though. Performance wise I am not sure if it is optimized as well

  • @RonnieDenzel
    @RonnieDenzel 3 месяца назад +2

    I think the red squiggly lines coming from accessing the name key in the errors object is due to the key being a defined value and not the key itself,so typescript throws an expected error as it has no idea such a key is defined or exists
    However,the JS works fine as the functionality is the same,so to tackle this i usually assert the value to a type,but i didnt know you can get the tostring value of it😂

  • @spizer98
    @spizer98 3 месяца назад +1

    wooooooow amazing content, expecting more on future❤

  • @jorgevillafraz2656
    @jorgevillafraz2656 3 месяца назад +2

    Excellent video 🎉

  • @lupaco26
    @lupaco26 3 месяца назад +1

    That's great my friend!

  • @ptolemyhenson6838
    @ptolemyhenson6838 3 месяца назад +4

    Doesn't React Hook Form have a hook specifically made for handling arrays (something like "useFieldArray" if I remember right)? I thought this tutorial would include that.

    • @cosdensolutions
      @cosdensolutions  3 месяца назад +1

      ahh it does, didn't know about it until now. thanks!

  • @brNoMundo123
    @brNoMundo123 3 месяца назад

    Great video! Thank you ❤

  • @alenomer3968
    @alenomer3968 3 месяца назад +1

    Nice video again 👏👍

  • @gauravbawa5609
    @gauravbawa5609 3 месяца назад +2

    @codesen I tried to subscribe for your newsletter however, it keep showing alert for error.

  • @OO-jm5qq
    @OO-jm5qq 27 дней назад

    這部影片太他媽的讚了

  • @0GERA0
    @0GERA0 3 месяца назад

    would you recommend zustand instead of redux? why, would you make a video of differents state managements (Y), thanks

  • @ajiteshmishra0005
    @ajiteshmishra0005 3 месяца назад

    Can you create an exclusive video on Design Pattern required for ReactJS Developer for developing UI with efficient working.

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

    Would you please make video about S.O.L.I.D pricple in react it's will be useful for us to be more profesional 😁

  • @Deus-lo-Vuilt
    @Deus-lo-Vuilt 3 месяца назад

    Good stuff, a like and sub!

  • @kalideb-y3y
    @kalideb-y3y 3 месяца назад

    should I not use "any" in typescript no matter what? for example in real world project

  • @jason.zubiate
    @jason.zubiate 3 месяца назад

    whats the shortcut extension

  • @griffin955
    @griffin955 3 месяца назад +2

    Hi, what VSCode extensions are you currently using for your tsx files to infer the remainder of the line you're writing so you an autocomplete it?

    • @ptolemyhenson6838
      @ptolemyhenson6838 3 месяца назад +1

      I'm pretty sure that's GitHub Copilot.

    • @griffin955
      @griffin955 3 месяца назад

      @@ptolemyhenson6838 So he is using Copilot during his video tutorials?

    • @usman_ghanni
      @usman_ghanni 3 месяца назад +1

      he mentioned somewhere "CoPilot" here at 15:27

  • @justin9494
    @justin9494 3 месяца назад

    thanksssssss

  • @shahwaizkarim-h9z
    @shahwaizkarim-h9z 21 день назад

    what would happen if we have passed register as a prop instead of control. like {...register(name)}.

  • @n00berdoober
    @n00berdoober 3 месяца назад

    Can you please tell, which extension you used for "rjfcp" snippet at 8:40 ? I can't find it in marketplace

    • @cosdensolutions
      @cosdensolutions  3 месяца назад +1

      my own custom snipper, check out my vscode setup video!

    • @n00berdoober
      @n00berdoober 3 месяца назад

      @@cosdensolutions Awesome ❤

  • @matchu-pitchu
    @matchu-pitchu 3 месяца назад

    The fallback empty array for the deps parameter of useKeyDown is not a good idea. Because if no deps are provided, then for every re-render a new empty array as fallback is recreated and the useEffect is unnecessarily executed.

    • @cosdensolutions
      @cosdensolutions  3 месяца назад +1

      Passing an empty array to useEffect doesn't cause it to re-render! It will then just run once since it has no deps. If you pass nothing at all, then it runs every render

    • @matchu-pitchu
      @matchu-pitchu 3 месяца назад

      @@cosdensolutions You are right. I looked at it wrong, I thought you were going to use `[deps]`, then it would have been a problem.

  • @HolySl0w
    @HolySl0w 3 месяца назад

    Great video, love it. paced right
    but i wanna be _THAT GUY_ ...
    i don't think there are any design pattern in this video. There are best practices, SOLID principles, dependency injection but no design pattern :(
    that was too much of a clickbait with "the cool word cool coders say" to me.
    but again... good video, good infos, good stuff.

    • @cosdensolutions
      @cosdensolutions  3 месяца назад +2

      Honestly, if you do a quick Google for design patterns, stuff like this comes up. I'd put SOLID principles in that too since it affects how you structure your project and components/hooks. I don't think there is one definition of design patterns in React otherwise I would've done exactly that 😁

  • @lokeshkavisth
    @lokeshkavisth 3 месяца назад

    First😍