Learn React Hooks: useMemo - Simply Explained!

แชร์
ฝัง
  • เผยแพร่เมื่อ 26 ก.ย. 2024
  • 🚀 Project React → cosden.solutio...
    📥 Import React (Newsletter) → cosden.solutio...
    Join The Discord! → discord.cosden...
    Source Code → github.com/cos...
    In this video we will learn about React hooks, starting with useMemo. This powerful React hook will allow you to fix your performance problems by memoizing a value and only re-computing when necessary. You will learn how to identify expensive computations in your components, how they affect the performance of your React app, and how to implement React's useMemo to memoize the value and use the dependency array to only compute when necessary.
    In this new React world, hooks are here to stay, so it's best to learn them! In this tutorial I demonstrate the useMemo React hook, and I explain it very simply and in a way that is easy to understand. Enjoy!

ความคิดเห็น • 223

  • @cosdensolutions
    @cosdensolutions  6 หลายเดือนก่อน

    Hope you enjoyed the video! I also have a really cool and unique course that will teach you way more than this video. You'll learn how to build an actual complex project with React. It's called "Project React" and you can find it at cosden.solutions/project-react. Also, I have a free weekly newsletter called "Import React" with tutorials, news, and cool stuff about React! You can sign up at cosden.solutions/newsletter?s=ytc

    • @EnesKab
      @EnesKab 5 หลายเดือนก่อน

      Please add also NextJS to the Project React Course 🙂

  • @abhishekprajapati6849
    @abhishekprajapati6849 9 หลายเดือนก่อน +23

    This was my first and the last useMemo tutorial. I just loved the way you isolated the concept along with a really simple explanation. Thank you!

  • @RichReflectionz
    @RichReflectionz ปีที่แล้ว +21

    As someone still new to react and web dev in general, this is awesome, the main hooks I’ve been using have been useState and useEffect. Would be great to see one about useRef too :)

  • @mandardeshpande7976
    @mandardeshpande7976 ปีที่แล้ว +16

    No one has ever articulated this topic so well. Because it's simple yet confusing. Also I was tired of watching premium full blown course about shopping cart app with tailwind and what not, all to explain the few key concepts hardly for 5 mins which eventually gets buried somewhere in the middle. Thanks for the short and sweet content.

  • @mehdiSupp
    @mehdiSupp 8 หลายเดือนก่อน +2

    Timing the "like and subscribe" popup exactly after you explain the solution is genius. I clicked like and it felt good I don't know why lol

  • @amarmusovic7748
    @amarmusovic7748 6 หลายเดือนก่อน +2

    This could be the best useMemo tutorial I've seen. And I've seen a lot. Almost too many. 😂 Oh, and I love that you keep rounding 29.999.999 to 29 million. Made me chuckle every time... 🤗🤗

  • @sahasrabhujaneuron5975
    @sahasrabhujaneuron5975 ปีที่แล้ว +6

    I've been struggling with this concept, but this video really made it easy and simple to understand. Many thanks!

  • @mostinho7
    @mostinho7 7 หลายเดือนก่อน +1

    Done thanks clear
    6:50 useMemo memoizes the result of a calculation/ function call until some dependencies change

  • @areebafatima7436
    @areebafatima7436 10 หลายเดือนก่อน +2

    I am so happy that I got landed to this channel. So concise, loving it.

  • @adiletbaimyrzauulu6589
    @adiletbaimyrzauulu6589 ปีที่แล้ว +2

    Hey, i really like your way of explaining. I bought an online course on React, but sometimes I just don't get it on the course, and your videos make it super duper clear for me. Thank you for your job, wish you all the best, and I hope some day you are going to have 500k subs on youtube.

    • @cosdensolutions
      @cosdensolutions  ปีที่แล้ว +1

      thank you for the kind words! I'm also working on a course by the way, will have this teaching style and a really well thought out plan that I haven't seen done in another course before! Coming in a couple of months

  • @flux2956
    @flux2956 หลายเดือนก่อน +1

    For all the new react developers watchng this video, you wont need usememo, usecallback, and memo hooks again. React now has it's own compiler which will do this for you automatically.

    • @cosdensolutions
      @cosdensolutions  หลายเดือนก่อน +1

      yes but good luck finding a job where they use cutting edge React. Even after 19 useMemo will still be important. It'll be a while before it truly goes away

  • @SWE507
    @SWE507 6 หลายเดือนก่อน

    Im enrolled in a couple of intermediate and advanced react courses.. even bought a couple of books.. But man, your vids are waaay better and so amazing! clear and concise!!!! i wish you had a full on intermediate/advanced react course. i would gladly pay for that!
    Thank you so much for existing!!!

    • @cosdensolutions
      @cosdensolutions  6 หลายเดือนก่อน +1

      I'm just about to launch a course that has 2 parts. The first part is more beginner, the second is more intermediate/advanced ☺️ if you get it when it launches you get both for the price of one

    • @SWE507
      @SWE507 6 หลายเดือนก่อน

      Will be sure to do so!! thank you! :D @@cosdensolutions

  • @rozitahasani3307
    @rozitahasani3307 หลายเดือนก่อน

    It was great. I didn't understand useMemo while I had read many articles about it but this video was very useful. now I know its logic and usage. Thank you

  • @kacperstepien8640
    @kacperstepien8640 10 หลายเดือนก่อน +1

    The best useMemo explanation I've seen.

  • @2029leandro
    @2029leandro 7 หลายเดือนก่อน

    This guy is the best teaching react stuff

  • @LauraDuranVelazquez-md4ot
    @LauraDuranVelazquez-md4ot 3 หลายเดือนก่อน

    Thank you for explaining these concepts so simply! Love your videos.

  • @shohanredwan
    @shohanredwan ปีที่แล้ว +2

    Wow... perfectly explained man, Thanks.

  • @fizdanielz
    @fizdanielz ปีที่แล้ว +1

    You have the best tutorials channel 🙌🙌🙌🙌

  • @smrpkrl
    @smrpkrl 10 หลายเดือนก่อน

    thank god i stumbled upon your channel..i am learning about all the hooks that react has to offer through your channel..i am loving the clear explanations that you provide..not a single dull moment in the video! kudos to you sir! love you!!!

  • @Ksahdia
    @Ksahdia ปีที่แล้ว

    Thank you very much for the easier explained concepts. I'm watching your videos to understand my lessons better. Both compliment each other well.

  • @badenis1291
    @badenis1291 8 หลายเดือนก่อน

    Made me rethink the way I was seeing this hook. Thanks

  • @pragatijadhav26
    @pragatijadhav26 6 หลายเดือนก่อน

    Best explanation ever. understand in one go.

  • @HerlonCosta
    @HerlonCosta 8 หลายเดือนก่อน

    It's definitely the best explanation I've ever seen. Thank you very much!

  • @jitujahagirdar613
    @jitujahagirdar613 8 หลายเดือนก่อน

    Thanks for this video 👍👍👍 really good way that you explain .
    I am lazy person who understand only if simplify way to explain of context and you did it 😜🤗. Good job..!😊

  • @hoangtran-ek8mn
    @hoangtran-ek8mn ปีที่แล้ว

    Ohhh mannn. Why are you so good at teaching? Thank you so much!!!

  • @varnerdamasceno8093
    @varnerdamasceno8093 3 หลายเดือนก่อน

    This video helped me a lot.

  • @Vishal360
    @Vishal360 7 หลายเดือนก่อน

    every tutorial of cosden solution is last tutorial ur gonna watch - Fr ✌✌

  • @yaro_05
    @yaro_05 หลายเดือนก่อน

    Nice tutorial, thanks!

  • @AsmaaRefaat-h8c
    @AsmaaRefaat-h8c 6 หลายเดือนก่อน

    you are THE BEST to explain!

  • @AnnaHuang-v9i
    @AnnaHuang-v9i 7 หลายเดือนก่อน

    the best video explains useMemo!! thank you so much!

  • @PriyaToliwal
    @PriyaToliwal 9 หลายเดือนก่อน

    Hi, your way of teaching is very easy to understand and helps me learn more concepts. Please make a video on Reactjs Forms as well.. it would really help me understand forms better. Thanks for making learning so easy and effective.

  • @dharylcarryalmora5414
    @dharylcarryalmora5414 7 หลายเดือนก่อน

    I like your tutorial very short and will explain.
    Thank you so much 😊😊

  • @MuhammadRidwan-kq4yw
    @MuhammadRidwan-kq4yw 3 หลายเดือนก่อน

    youre an react angel haha,awesome bro,thank you

  • @harshitkrvishwakarma3602
    @harshitkrvishwakarma3602 10 หลายเดือนก่อน

    Love your explanations, you have made react a lot simpler.

  • @uquantum
    @uquantum ปีที่แล้ว +1

    Really useful tutorial. Thanks for being so helpful!

  • @netaivgi
    @netaivgi 3 หลายเดือนก่อน

    So simply explained! wow, amazing

  • @TusharBachchan
    @TusharBachchan 5 หลายเดือนก่อน

    Great explanation!

  • @ozzzpo
    @ozzzpo 11 หลายเดือนก่อน

    dude you're awesome. Thank you so much for your explanations, now I guess I don't need to watch other videos about react hooks :)

  • @codetechpro
    @codetechpro 4 หลายเดือนก่อน

    that was very helpful, thank you for clearing the confusion

  • @mathemagicstelugu7848
    @mathemagicstelugu7848 9 หลายเดือนก่อน

    Really its a Last Usememo video for me🥰🥰🥰

  • @DarkRider213
    @DarkRider213 8 หลายเดือนก่อน

    this was a perfect explanation - thank you!

  • @Onto.walking
    @Onto.walking 20 วันที่ผ่านมา

    Premium explanation

  • @abhinavdhama3014
    @abhinavdhama3014 10 หลายเดือนก่อน

    Amazing amazing amazing explanation bro . ♥️♥️♥️♥️♥️. Plss do a javascript series also

  • @dstrader7583
    @dstrader7583 ปีที่แล้ว

    Thanks, Alot Man. Glad i picked your video first now i don't need to watch another video on this.

  • @jaykaytech
    @jaykaytech 8 หลายเดือนก่อน

    the most clear explanation!

  • @sawaregamer8815
    @sawaregamer8815 2 หลายเดือนก่อน

    perfect tutorial

  • @redhood7105
    @redhood7105 4 หลายเดือนก่อน

    God tier video

  • @WaseemAhmad-mf3wh
    @WaseemAhmad-mf3wh 6 หลายเดือนก่อน

    Thank you for your clear explanation ❤

  • @gnsc
    @gnsc 2 หลายเดือนก่อน

    Nice explanation

  • @coolme7437
    @coolme7437 8 หลายเดือนก่อน

    Best tutorial for useMemo!

  • @harag9
    @harag9 11 หลายเดือนก่อน

    Great video, thanks for this, I'll have to look at implementing this now.

  • @PfutIndustries
    @PfutIndustries 4 หลายเดือนก่อน

    best teaching

  • @TahaAli-k6l
    @TahaAli-k6l 10 หลายเดือนก่อน +2

    Hi sir, I am grateful that I landed here and learn some valuable concepts of useMemo, I have a question that on 11:30 minute you added the count as a dependency array, now when a count changes that computation will run again, then how the usememo is beneficial here, let me know please?

    • @cosdensolutions
      @cosdensolutions  10 หลายเดือนก่อน +1

      The useMemo is not to prevent a re-render, but rather control when it happens. In that example we did indeed invalidate what we did by adding count, however that's necessary. Our memo depended on count so we had to provide it. The benefit lies when we add a new state variable that is not related to that, then useMemo won't re-render when that changes.
      So again, we're not trying to prevent a re-render, but rather control when it happens and only have it happen when absolutely necessary, otherwise return the memoed value

  • @dharmeshgohil9375
    @dharmeshgohil9375 9 หลายเดือนก่อน

    all your video is awesome keep it up ,make small project which make use of the all hooks how to use in company level or share some difficult situation of it when to use which hooks use it will be great help

    • @cosdensolutions
      @cosdensolutions  9 หลายเดือนก่อน +1

      Currently in the process of making a full on course with exactly that!

  • @allan_gr
    @allan_gr ปีที่แล้ว

    Simply explained indeed, Thank you.

  • @vandermonke4178
    @vandermonke4178 3 หลายเดือนก่อน

    Would be great if you push the code at the start of the video to a different branch and the end product to the master branch so we could code along

  • @khalidamerica1848
    @khalidamerica1848 7 วันที่ผ่านมา +1

    I'm new to React and i'm asking if we could solve this probleme using useEffect Hook , by passing the "items" in the dependency Array ?

  • @athmaram4256
    @athmaram4256 11 หลายเดือนก่อน

    Great explication bro. Thank you very much

  • @gionniilbassotto
    @gionniilbassotto 7 หลายเดือนก่อน +1

    so useMemo is fairly similar to useEffect? but useEffect is called when the page is loaded and/or for some dependencies?

  • @BBocho
    @BBocho 10 หลายเดือนก่อน

    great explanation, thank you very much!

  • @isaac-9185
    @isaac-9185 ปีที่แล้ว +1

    Really well explained, thank you. Also mind dropping a list of most common cases that you would use useMemo for?

    • @cosdensolutions
      @cosdensolutions  ปีที่แล้ว

      I would only use it when there's an expensive computation to make, or when I want to prevent this from causing a expensive child component to re-render

  • @ShannonSimonCherry-b7t
    @ShannonSimonCherry-b7t 11 หลายเดือนก่อน

    So good! You explained it perfectly!

  • @reactdev2838
    @reactdev2838 10 หลายเดือนก่อน

    Once again great tutorial...

  • @martrom0
    @martrom0 5 หลายเดือนก่อน

    Wonderful !! 👏 I subscribe right away !

  • @Viva-07
    @Viva-07 7 หลายเดือนก่อน

    Awesome...very well explained

  • @arek9430
    @arek9430 9 หลายเดือนก่อน

    Good stuff, thanks

  • @agosolsgaming4036
    @agosolsgaming4036 6 หลายเดือนก่อน

    awesome explanation, thanks

  • @uzairahmed2975
    @uzairahmed2975 7 หลายเดือนก่อน

    Love it the way you explained everything single detail, Can I also use useMemo with autocomplete with fetch?

  • @InarusLynx
    @InarusLynx 4 หลายเดือนก่อน

    Makes me think of react query. Prevents unnecessary api calls to your backend by multiple options to control fetches.

  • @romanzaritskyi303
    @romanzaritskyi303 6 หลายเดือนก่อน

    Thanks, man

  • @AbsolutePain
    @AbsolutePain 8 หลายเดือนก่อน +1

    Hey cosden, we can achieve the similar results using useEffect ? so how do we identify when should we use memo ?
    // Use effect equivalent:
    import { useState, useMemo, useEffect } from "react";
    import { data } from "./utils/data";
    const Counter = () => {
    const [arr] = useState(data);
    const [selectedValue, setSelectedValue] = useState(0);
    useEffect(() => {

    const val = arr.find((elem) => elem.isSelected);
    setSelectedValue(val);
    }, [arr]);
    const [count, setCount] = useState(0);
    return (

    Count:{count}
    setCount(count + 1)}>+1
    selectedValue : {selectedValue.id}

    );
    };
    export default Counter;
    Thnaks for the video. Can you make a complete project in react with best practices. Thanks.

    • @cosdensolutions
      @cosdensolutions  8 หลายเดือนก่อน +4

      So while your example works, it's not the recommended approach. The way you have it, you have an extra state variable that you have to manage and a whole useEffect to manage it. If you do it like I showed in useMemo, then selectedValue automatically gets re-computed when the array changes, and you don't have to do it yourself. That's why it's a better approach.
      There are a lot of times where something shouldn't be done with an useEffect even if it can, just because it introduces an extra dependency you have to manage and keep up to date. Also, your example creates an extra render cycle in the component which is unnecessary

  • @LowriKate
    @LowriKate ปีที่แล้ว

    Great explanation, thank you!

  • @rakotonanaharytsantahavana4825
    @rakotonanaharytsantahavana4825 2 หลายเดือนก่อน

    Really great video. I have few questions if u don't mind.
    What are the differences between useMemo and useEffect ? Not talking about syntax or the option return function.
    Instead of using useMemo in this case, you can use useEffect and put items as dependencies.
    useEffect(()=>
    {selectedItems = item.find(item=> item.id)},
    [items]})
    Re-computation only triggered once items is changed, and instance is destroyed to create a new one right? Same as useMemo?
    So why useMemo instead of useEffect?
    Is it linked to memory usage or am i missing something?
    Thank you

  • @oscardasilva971
    @oscardasilva971 ปีที่แล้ว

    Well explained Thank you very much.

  • @bhargavchadalla
    @bhargavchadalla ปีที่แล้ว

    Thank you, great explanation

  • @2ameridiem
    @2ameridiem 4 หลายเดือนก่อน

    What is the difference between useMemo and useEffect? If we wrap the selectedItem function inside a useEffect like-
    useEffect( ( )=>{
    const selectedItem=items.find((item)=>item.isSelected)
    },[items ] )
    then it's serving the same purpose.

  • @TorreLoCascio-mq1bx
    @TorreLoCascio-mq1bx 5 หลายเดือนก่อน

    How does React know if "items' changes with looping through all 29mil items? Wouldn't that be the same performance issue we had? Thanks, great tutorial in general.

  • @cordial
    @cordial 11 หลายเดือนก่อน +1

    But when you add count to the use memo dependency array, are you not now doing the find again on every click? Oh I guess this isn't a long running task now as its not searching through the whole array any more. But, doesn't that negate the reason to add useMemo in the first place?

    • @cosdensolutions
      @cosdensolutions  11 หลายเดือนก่อน +1

      Yep it does, but that's what you want. You don't want to prevent a re-compute, but rather control when it happens. You need the count to perform that operation so there's no way around it. However if you added a new state variable and changed that, then it wouldn't re-compute. It would without useMemo. That's the goal, to control and only when needed re-calculate!

  • @jackmackenzie8466
    @jackmackenzie8466 3 หลายเดือนก่อน

    Great videos. 1 question though, when you have count and items in the hook, why doesn't that lag as it seems like the items are being looped each time count changes?

  • @iganic7574
    @iganic7574 10 หลายเดือนก่อน +2

    what is difference between use Memo and use Effect ????

    • @buildsome
      @buildsome 7 หลายเดือนก่อน

      useMemo works on the memoization concept. That means it stores the result of a function call based on the parameters passed, ex. a sum function where you pass 2 and 2, it will always return 4, so it will store that if you pass 2 and 2 it will directly return 4 instead of actually calculating 2 + 2.
      useEffect just simply runs on re-render

  • @RickCodez
    @RickCodez ปีที่แล้ว

    Very well explained!

  • @iamparmjeetmishra
    @iamparmjeetmishra 4 หลายเดือนก่อน

    thank you so much

  • @nawazishali274
    @nawazishali274 ปีที่แล้ว

    Ohh man nicely explained 🎉❤

  • @gharbos
    @gharbos ปีที่แล้ว

    Appreciate your explanation ! thanx

  • @thatkannurgirl
    @thatkannurgirl 7 หลายเดือนก่อน

    Thank you

  • @O1zo
    @O1zo 7 หลายเดือนก่อน +5

    You also update the state wrong. You should not use a state to update the same state. The set state function can get function that get a argument of the last state value.

    • @mootazbellehweslati5603
      @mootazbellehweslati5603 หลายเดือนก่อน +1

      Changing a count state is a simple case so you don't have to use a function

    • @REAL_J0KER
      @REAL_J0KER หลายเดือนก่อน +1

      calling a whole function to increment a number? Ouch

    • @mossfoobar8322
      @mossfoobar8322 17 วันที่ผ่านมา

      Its a preference and style. Both ways are valid buddy. Youre one of those devs who says if i didn’t write it, its wrong. No just because people have different styles doesn’t mean they are wrong and youre right.

  • @samahgad241
    @samahgad241 9 หลายเดือนก่อน

    thanks alot , very helpful🌹

  • @prasannagramopadhye4506
    @prasannagramopadhye4506 ปีที่แล้ว +2

    Great Explanation, thank you. I have 1 doubt. If I use useState to store the value of selected items and changed its value only when there is change in the dependency array of the useEffect hook, then will it produce the same result? If yes then what is the difference between the two ?
    function Demo({}: DemoProps) {
    const [count, setCount] = useState(0);
    const [selectedItem, setSelectedItem] = useState(0);
    const [items] = useState(initialItems);
    useEffect(() => {
    const temp = items.find((item) => item.id === count)
    setSelectedItem(temp)
    }, [items])

    return (

    Count: {count}
    Selected Item: {selectedItem?.id}
    setCount(count + 1)}>
    Increment


    );
    }

    • @cosdensolutions
      @cosdensolutions  ปีที่แล้ว +2

      So first of all in your example you're missing `count` in your dependency array. You want that useEffect to run as count changes, as well as when items changes.
      Second of all, that code is equivalent, but now you have an extra piece of state + the hook that keeps it in sync. The way I showed in the video is better because the "sync" happens automatically.
      That approach is better because it has less code (one less hook) and less responsibility (selectedItem is auto updated through `useMemo` without manually having to do anything)
      So you're basically doing the same work, just with extra dependencies, which isn't ideal 😁 best to keep things simple and automatic

    • @sweekiatwong8995
      @sweekiatwong8995 ปีที่แล้ว +2

      was thinking the same thing glad to have found this exchange in the comments

    • @bbbeo8912
      @bbbeo8912 8 หลายเดือนก่อน

      Thank you both for asking and answer. I'm about to ask the same but got the point here.

  • @dariotizzoni1517
    @dariotizzoni1517 ปีที่แล้ว +1

    Hi, I’m new to react and your videos are really helpful.
    I have two questions:
    1. In the last specific scenario, is it really necessary using useMemo? I mean, the only cause of rerender is when count changes, so useMemo would compare every render the dependecies.
    2. What is the differences between useMemo and useCallback?

    • @cosdensolutions
      @cosdensolutions  ปีที่แล้ว +1

      1. In the context of the video, no it isn't. But the goal was to show you how it works!
      2. useMemo returns a value, useCallback returns a function. They are the same otherwise!

    • @dariotizzoni1517
      @dariotizzoni1517 ปีที่แล้ว

      Oh, that’s right! Really thanks 😊

  • @3042640426
    @3042640426 5 หลายเดือนก่อน

    In this case, if the count changes frequently and the re-render is only triggered by it, using useMemo here would be unnecessary. Right?

  • @lsaavedr
    @lsaavedr 2 หลายเดือนก่อน

    thanks!

  • @simplysxb
    @simplysxb 4 หลายเดือนก่อน

    Hello their, your video is just clear the useEffect. I copied your code and observed it is showing The couunt is 0 THEN I am been cleand-up THEN The couunt is 0 on refresh the page. Why so?

  • @AlvaroDoune
    @AlvaroDoune 7 หลายเดือนก่อน

    Why is faster compare if the items array change than find function?

  • @rajantwanabashu
    @rajantwanabashu 4 หลายเดือนก่อน

    I don't understand how is it optimizing performance when using
    const selectedItem = useMemo(
    () => items.find((item) => item.id === count),
    [count, items],
    );
    when I only have count and items state in component. any how whenever one of them change selectedItem recomputes.

  • @pankajchaudhary_281
    @pankajchaudhary_281 ปีที่แล้ว

    Best video ever❤❤

  • @samarthchaplot2998
    @samarthchaplot2998 3 หลายเดือนก่อน

    Can't we accomplish the same thing using useEffect? Can someone explain the difference of using these two hooks in this scenario?

  • @BushidoWegDesKrieger
    @BushidoWegDesKrieger 7 หลายเดือนก่อน

    I reviewed some custom hooks and sometimes found useCallback/useMemo with an empty dependency array. Could you explain why that is?

  • @Code_with_random
    @Code_with_random 3 หลายเดือนก่อน

    Can we use multiple use effect in one component

  • @emmanuelareiza9699
    @emmanuelareiza9699 4 หลายเดือนก่อน

    Ty bro

  • @OXIDE777-is6gs
    @OXIDE777-is6gs ปีที่แล้ว

    Great one!! thanks bro