Optimizing Rendering Performance in React

Поделиться
HTML-код
  • Опубликовано: 20 авг 2022
  • We are going to use some performance optimization techniques to fix re-rendering issues in our React app that we discovered after performance profiling using React Developer Tools. React Hooks such as useCallback and memo play a big role here. Let's see how they can help here.
    ======⚡⚡⚡======
    Get a 20% discount on Brilliant.org (to learn Science, Technology, Engineering, and Math): brilliant.sjv.io/kjVO2z
    ======⚡⚡⚡======
    🙌 Become my Patreon and get exclusive perks: / softdevdiaries
    💼 Follow me on LinkedIn and drop me a message if you'd like: / gusgadirov
    💻 Also, let's connect on GitHub: github.com/gusgad
    📚 Resources:
    React Docs on Optimizing Performance: reactjs.org/docs/optimizing-p...
    And don't forget to subscribe for more videos like this 😊
    #react #javascript
  • НаукаНаука

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

  • @SoftwareDeveloperDiaries
    @SoftwareDeveloperDiaries  Год назад +22

    Obviously such optimizations are not necessary with a small number of re-rendered children as long as they are not too heavy. But at what point does memoizing become important? 100 items, 1.000 items or maybe 100.000 items? Share your thoughts here ✌

    • @kasemalolo5587
      @kasemalolo5587 Год назад +1

      I want to ask
      if I have a lot of element and put them in memo function Will it cause me memory problems?

    • @GuestUser-vf9qe
      @GuestUser-vf9qe 6 месяцев назад

      Try to have a large form of inputs. And control this form via Formik library for validation of user input. Probably (or even highly likely) you'll face some issues with unnecessary re-rendering...

  • @shy6489
    @shy6489 10 месяцев назад +2

    mind-blowing, that's what i was searching for a very long time 🔥🔥

  • @muhammadumar5385
    @muhammadumar5385 Год назад +1

    This helps get a deeper insight, very helpful. At least for a beginner like me. Keep up the good work.

  • @maximus4510
    @maximus4510 Год назад +5

    I like this channel it deserves more subscribers🔥
    you're very calm and your explanation while coding is so clear and straight to the point.
    Thank you for your quality content!

  • @rohan7011
    @rohan7011 Год назад +2

    the best useCallback usage and example!

  • @tikamikas3245
    @tikamikas3245 6 месяцев назад

    Massive thank you!! You explained this perfectly and helped me solve an extremely annoying bug I’ve been dealing with 👏🏼

  • @JenJHayden
    @JenJHayden 7 месяцев назад +3

    This was a great video. I am brand now to full stack development. Days old. I looked up a video he mentioned to learn about profiling and performance to speed up a build. I looked up some stuff and I go here to your video. The problem for me is I think I am a little too new to full appreciate it yet. I took notes on everything you said and I have bookmarked this. Thank you.

  • @UsmanTheDev
    @UsmanTheDev Год назад +1

    It was very helpful, thanks for your efforts

  • @AdamFiregate
    @AdamFiregate 5 месяцев назад

    Great summary and presentation! Thank you.

  • @mrunalvaidya388
    @mrunalvaidya388 Год назад

    Watched your 10-15 videos(1st day), amazing Stuff and beautifully explained!!!!

  • @felixdziekan7335
    @felixdziekan7335 Год назад

    Thx for the info will try that later!

  • @persianman72
    @persianman72 8 месяцев назад

    You saved my time with this video, thank you!

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

    thank you for the great example of real life usage of these hooks! It's so precious among other explanations

  • @germanmartinezsolis9543
    @germanmartinezsolis9543 Год назад

    Thanks bro I'm gonna use this advices for my further project

  • @costaszeimpekis994
    @costaszeimpekis994 Год назад +1

    Very good analysis, great work

  • @multiverse915
    @multiverse915 26 дней назад

    Bro explained useMemo and useCallback hook in a much easy manner 👏👏

  • @faridul.hassan
    @faridul.hassan Год назад

    Thank you for this awesome tutorial.

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

    Really useful video!

  • @jorgejorge8878
    @jorgejorge8878 7 месяцев назад

    Dude, more! First video I watched and I loved it

  • @mostafabrazi4228
    @mostafabrazi4228 Год назад

    Well explained, good job👍

  • @ichigoplayss376
    @ichigoplayss376 11 месяцев назад

    Wow, Thanks a lot bro. Now I understand it

  • @acearvingando6848
    @acearvingando6848 Год назад

    well explained 👍 appreciate your content

  • @kimberlyrojas3421
    @kimberlyrojas3421 Год назад

    Really helpful, thank you!

  • @kiadtisuk8857
    @kiadtisuk8857 Год назад

    That is helpful for my work, Thanks for this vdo

  • @archiee1337
    @archiee1337 10 месяцев назад

    Cool stuff, thanks

  • @easifier
    @easifier 9 месяцев назад

    thank you for this quite helpful info 👍🏻

  • @andregomes7232
    @andregomes7232 Год назад

    Amazing content! thanks

  • @bustopgamer5802
    @bustopgamer5802 Год назад

    Great job

  • @havefun5519
    @havefun5519 11 месяцев назад

    Thanks for the video.

  • @devcode9715
    @devcode9715 Год назад

    Great job 👏

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

    Thanks :)

  • @ToastRusk
    @ToastRusk 10 месяцев назад

    This was soooo good.

  • @keerthanachar
    @keerthanachar Год назад

    Thank you

  • @zainkhas93
    @zainkhas93 Год назад

    Quality content!

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

    I've seen code like this in my codebase at work and didn't really get why it was necessary, this kinda makes a lot of sense

  • @friendsfair9283
    @friendsfair9283 2 месяца назад

    It was a good video.
    If you create a playlists on performance optimization, that would be great❤

  • @VictorZamanian
    @VictorZamanian 6 месяцев назад +1

    But was the memo() of the child input components necessary after the useCallback() addition? Was the callback the only issue, or was memoization of the components themselves also necessary?

  • @hillelspivakov3140
    @hillelspivakov3140 Год назад

    Hi, great video. What theme are you using for your vscode?

  • @PraveenKumaran-wh5gn
    @PraveenKumaran-wh5gn Год назад

    Good One Bro..

  • @randompointlessness2766
    @randompointlessness2766 6 месяцев назад

    Thanks ! If I knew this, I would have saved my last job 😅

  • @mohdsahil226
    @mohdsahil226 Год назад

    very well explained!
    Would you please explain virtual DOM and how it updates the RealDOM?

    • @SoftwareDeveloperDiaries
      @SoftwareDeveloperDiaries  Год назад

      Hey mate! I put it on my list, but in the meantime I found this insightful article, maybe it could help you :)
      blog.logrocket.com/virtual-dom-react/

  • @mase-ob1vf
    @mase-ob1vf Год назад

    KING

  • @user-ut4hj7kc1t
    @user-ut4hj7kc1t Год назад

    And what about the context? Is there a way to improve performance of that? Because since context update one of its values, the whole value gonna be considered as a new one, and all of the components that have hooked useContext will be rendered Iven they have memo on them

    • @SoftwareDeveloperDiaries
      @SoftwareDeveloperDiaries  Год назад +2

      Thanks for a great question. I think this might be useful:
      stackoverflow.com/questions/57030018/react-context-with-hooks-prevent-re-render

  • @mohammadnoushadsiddiqi2550
    @mohammadnoushadsiddiqi2550 10 месяцев назад +1

    This will not help if we have like 15 - 20 input, radio, uploader, switches.
    Because using usecallback for all will be a problem.
    memorization technique comes with a cost.

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

    Helpfull video. I Nee help.

  • @suryakumara3360
    @suryakumara3360 Год назад

    Hi, why not putting id, and value in callback dependencies ? so it will be triggered when the id or value changes.

    • @SoftwareDeveloperDiaries
      @SoftwareDeveloperDiaries  Год назад

      Unless I misunderstood you, this way it will still rerender the whole component.

    • @suryakumara3360
      @suryakumara3360 Год назад +1

      @@SoftwareDeveloperDiaries Got it, I don't code in hand.

    • @jagjot1697
      @jagjot1697 Год назад +4

      id and value are probably of type 'String' or 'Number', which are both primitive types (includes string, number, boolean etc.) in JS. On each re-render of the parent, anything which is not a primitive data type - it could be an array, a function, or an object - all these are re-created (re-assigned a new reference/location/address in the memory) by the parent component because these are referenced by memory. All the primitive values are not re-created and hence, those do not change on the parent's re-render, which is why we don't need to 'cache' primitive values.

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

    Just wondering why react doesnt do this optimizazion by default?

  • @netssrmrz
    @netssrmrz 9 месяцев назад

    Nice video about a very common issue. Personally, issues like this is why I believe React needs to go the way of the dodo. Devs shouldn't assume that giving up control over when to render is going to magically make everything simple.

  • @oleksandrluchytskyi6867
    @oleksandrluchytskyi6867 Год назад

    can we pass parameters to the useCallback((id: number) => () => setSelectedId(id),[]); ?

    • @SoftwareDeveloperDiaries
      @SoftwareDeveloperDiaries  Год назад +1

      Yes, you can:
      beta.reactjs.org/reference/react/useCallback

    • @oleksandrluchytskyi6867
      @oleksandrluchytskyi6867 Год назад

      @@SoftwareDeveloperDiaries ah… this example works for me, thanks 👍 e.g. (I need to call useCallback for each list item in a loop, but it’s not allowed)

  • @juliansyah4byte57
    @juliansyah4byte57 Год назад

    You get my sub and turn on bell

  • @hund1267
    @hund1267 Год назад

    Handler shouldn't recreate if you lift it above the component, or?

    • @SoftwareDeveloperDiaries
      @SoftwareDeveloperDiaries  Год назад

      Great point, it won't indeed! There are different opinions on this approach as well as small implications tho: stackoverflow.com/a/62925172

  • @anjanakaruna4095
    @anjanakaruna4095 Год назад

    my god! why we dont use these things in our code... thanks for sharing! open some new areas to study.

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

    I can't wait for React 19's compiler to come out so I don't have to bother with this.

  • @symphony86
    @symphony86 Год назад

    I never have to think about all these doing angular or vue.. never have any issue with performance or lagging.. only react.. whyyyy

  • @Amamamamwnwb
    @Amamamamwnwb Год назад

    Don’t set the editor to dark mode unless you set browser too. With screen bliking black and white, my eyes hurt. Thanks for great video though.

  • @timelimitexceeded0
    @timelimitexceeded0 11 месяцев назад

    Why not just take out the function out of the component instead of using useCallback

    • @SoftwareDeveloperDiaries
      @SoftwareDeveloperDiaries  11 месяцев назад +1

      Indeed! There are different opinions on this approach as well as small implications tho: stackoverflow.com/a/62925172

  • @bradyfractal6653
    @bradyfractal6653 Год назад +1

    I think you mispronounced “use Svelte” 😂

  • @AkioJunichiro
    @AkioJunichiro Год назад +1

    Seems interesting but you speak wet, it's hard to focus