Learn React Hooks: useDeferredValue - Simply Explained!

Поділитися
Вставка
  • Опубліковано 21 жов 2024
  • Join The Discord! → discord.cosden...
    Source Code → github.com/cos...
    In this video we will learn about React hooks, starting with useDeferredValue. This powerful React hook will allow you to optimise the performance in your application by deferring some state updates at a later point, prioritising the ones that actually matter. In this video we take a look at some examples where the useDeferredValue React hook makes sense to use, and we see exactly how it should be used!
    In this new React world, hooks are here to stay, so it's best to learn them! In this tutorial I demonstrate the useDeferredValue React hook, and I explain it very simply and in a way that is easy to understand. Enjoy!

КОМЕНТАРІ • 40

  • @cosdensolutions
    @cosdensolutions  7 місяців тому

    Hey everyone! I just launched 🚀 Project React, which is a course that teaches you React by building a real-world project. It goes way beyond what you see in these videos and walks you through step-by-step on how to build a big and complex application with React! You can check it out here: cosden.solutions/project-react

  • @abeercodes
    @abeercodes Рік тому +3

    Your explanation is seriously good and very much clean. Thank you

  • @AlexanderBelov-y8o
    @AlexanderBelov-y8o Рік тому +1

    Going to use this all the time for form validation.

  • @aneurysmjs
    @aneurysmjs 5 місяців тому

    usually I don't comment that often but your explanation rocks, nice job :)

  • @Arunmurali12
    @Arunmurali12 Рік тому

    Thank you sir, this is the best explanation of the hook I had found on UA-cam...

  • @petar567
    @petar567 Рік тому +5

    Have you considered making videos explaining how the different hooks work under the hood? Also thank you for the great explanation, I will definitely try this hook in my projects.💯

    • @cosdensolutions
      @cosdensolutions  Рік тому +2

      yes, but in the future! still doing beginner stuff for now :D

  • @konradmleczko3810
    @konradmleczko3810 9 місяців тому

    you are teaching incredibly fine

  • @muneebahmad8772
    @muneebahmad8772 Рік тому

    Your explanation is outstanding ❤

  • @harag9
    @harag9 11 місяців тому

    great video, thanks, that use hook will be so useful.

  • @sviatoslav8776
    @sviatoslav8776 4 місяці тому

    Very comprehensive, cool)

  • @OtisHenryChiemezie
    @OtisHenryChiemezie Рік тому

    This is awesome 👌 I will try this with my search component. 🎉🎉🎉

  • @BeeBeeEight
    @BeeBeeEight Рік тому +2

    Thank u Darius. It's definitely a very good explanation, but I think it's even better to put this together with useTransition since Dan Abramov intended these two to have similar use cases but targeting different codes.
    IMHO, we could also create a custom debouncing hook to control the timeout for rendering the result value. If I had to debounce the rendering of search results, such a hook would be then more flexible than useDeferredValue since we can't really control when useDeferredValue will render the result.

    • @cosdensolutions
      @cosdensolutions  Рік тому +1

      Yes absolutely! All of these 3 hooks are very similar and have many things in common

  • @mladenorsolic370
    @mladenorsolic370 Рік тому +1

    This is a way better/smarter hook then yhe old debounce based one with a timer. I should not worry about the timer, and the play here is : start the render and restart if state changes. I love it! Thank you!

    • @cosdensolutions
      @cosdensolutions  Рік тому +1

      they are for different use cases! The timer is great when you want to prevent network requests for example

    • @mladenorsolic370
      @mladenorsolic370 Рік тому

      @@cosdensolutions but i would still use this one instead of debounce, because you can never know how long is the network request gonna take, i used debounce to infinetly load additional 15 items each time making a request to server and in most cases .3 sec was enough but if that request takes longer then whole thing breaks with spinner never disappearing. Using this hook that problem is simply gone

  • @cabrelelvis
    @cabrelelvis Рік тому

    Very usefull when you have input to query database or some api with params or query you dont want to make request for each letter, before this video I used debounce function

    • @cosdensolutions
      @cosdensolutions  Рік тому

      debounce is better for api requests, because it is time based. This hook will fire a lot of requests on fast computers (macbooks for example)

  • @duybachsnguyen1443
    @duybachsnguyen1443 2 дні тому

    Thank you very much

  • @belkocik
    @belkocik Рік тому +6

    What is the difference between useDeferredValue and use-debounce library (useDebounce hook) from npm?

    • @beepmcjeep5527
      @beepmcjeep5527 Рік тому +3

      I believe useDeferredValue makes actual use of requestAnimationFrame or React's internal renderer scheduling. I'm guessing debounce is a naive (although probably equally effective) implementation utilizing a delay.

    • @austinstewart1451
      @austinstewart1451 Рік тому +3

      Use-debounce also gives more control since you can pass the time argument. useDeferredValue will simply schedule the task to run separate from the primary state but you don't control the delay. use-debounce would be good for expensive server hits or areas that have heavy calculations and don't need to be rendered immediately so you can set it to a higher delay like 5 seconds.

  • @_ahmedaloush1365
    @_ahmedaloush1365 7 місяців тому

    Thank you Bro the explain is amazing

  • @farhadkhoshnoodi7954
    @farhadkhoshnoodi7954 Місяць тому

    thanks was awesome...

  • @andriishtoiko7688
    @andriishtoiko7688 2 місяці тому

    what if [stateVal, setStateVal] = useState({ hello: world }) -> stateVal is an object but it will not be brand new object on each rerender since it is saved in state - would be ok to pass stateVal into useDefferedValue?

  • @aissasemaoui6354
    @aissasemaoui6354 Рік тому

    Thank you Darius, Can we use objects with useRef since it preserve the value between rerenders?

  • @belkocik
    @belkocik 8 місяців тому

    10:36 what you mean? If I pass an array of object to this Demo component and then pass it to useDefferedValue hook it wouldn't cause an infinite loop?

    • @daydreamer9469
      @daydreamer9469 6 днів тому

      If it’s still inside a React component I think it will cause infinite loop.
      Defining it outside the component or using useRef might avoid this issue.

  • @srinivasreddysagi8722
    @srinivasreddysagi8722 Місяць тому

    Seems like, debouncing is implemented

  • @sunilanthony17
    @sunilanthony17 10 місяців тому

    It seems similar to debounce.

  • @USPSLaura
    @USPSLaura 4 місяці тому

    How can I use it in real life project 😢

  • @beepmcjeep5527
    @beepmcjeep5527 Рік тому +2

    "teste" 😂

  • @chriscardone589
    @chriscardone589 Рік тому

    Why don't you do full stack projects with all the best practices in React?

  • @snatvb
    @snatvb Рік тому

    you forgot say about memo - without this hok you will have same issue
    I dislike useDeferredValue 'cause I can't control this debounce effect, and this work like debounce, looks unpredictable and can't be configured, nah

  • @Granta_Omega
    @Granta_Omega 4 місяці тому

    This makes my testes hurt.

  • @shahabgohar3350
    @shahabgohar3350 Рік тому

    it is kind of a debounce-ish