React's new cache function

แชร์
ฝัง
  • เผยแพร่เมื่อ 15 ม.ค. 2025

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

  • @Delba
    @Delba 11 หลายเดือนก่อน +2

    Great step by step walkthrough. Thank you!

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

      Thanks Delba!

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

      @@RyanToronto simp

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

    Been watching your videos today and I have fallen in love with React again. Thank you.

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

      Wow, that's great to hear! Love React!

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

    I am brand new to React but your explanation is very clear even to me.

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

      Glad to hear that!

  • @bideshbanerjee5506
    @bideshbanerjee5506 11 หลายเดือนก่อน +4

    So basically when RSC starts to render, wherever it finds the cached function first it stored the result and uses it down the tree. It basically happens on every request.

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

      Yup, exactly!

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

    Nice!! I didn't get it at first when I read the article on BuildUI without watching the video yet, but now it makes complete sense. And with Next.js's default caching, it makes for a pretty effective combo. 😁

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

      Glad it helped!

  • @hemantwasthere
    @hemantwasthere 11 หลายเดือนก่อน +3

    This is crazyy 🔥

  • @asimalqasmi7316
    @asimalqasmi7316 11 หลายเดือนก่อน +2

    Cool
    Clear explanation

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

      Glad you liked it!

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

    Amazing definitely gonna use in my next project. Thanks and keep uploading videos like this ❤

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

      Thank you!

  • @mohamedyoussef8835
    @mohamedyoussef8835 27 วันที่ผ่านมา

    Great explanation ++++++++++ 🙂

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

    in nextJS, the fetch function is automatically cached, right?

    • @RyanToronto
      @RyanToronto  11 หลายเดือนก่อน +2

      I believe so. The Next fetch cache is a long lived cache that is shared between multiple requests to your application. React's cache() is a per-request cache that is only active for the current lifecycle of the request.

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

    Thank you Ryan!

  • @AnasSiddiqui-n2y
    @AnasSiddiqui-n2y 2 หลายเดือนก่อน

    Great 🔥

  • @janisbasisbasovsdev7147
    @janisbasisbasovsdev7147 11 หลายเดือนก่อน +4

    I think Nextjs have integrated this cache by default. But they have also integrated extra 30 seconds cache on client side as well and without possibility to opt out of it. The 30 seconds client side cache makes it impossible to create Admin Dashboard with "live" data with only server components :(

    • @RyanToronto
      @RyanToronto  11 หลายเดือนก่อน +2

      Cool, thanks for sharing!
      React's cache is built right into React, but Next.js also provides some additional caching features in addition to `cache()`. Next has a lot of caching: build cache, fetch cache, client side router cache, and then on top of it there's the React cache... it can be so confusing to know which-is-which!
      I ran into the admin dashboard with live data problem a few months ago... Here's how I solved it: th-cam.com/video/-t3-rG5G5tA/w-d-xo.html It's not pretty, but it seems to be working so far :)
      Thanks for the comment, I love hearing about how people are using RSCs.

    • @ontanicolae1794
      @ontanicolae1794 11 หลายเดือนก่อน +2

      cant you export dynamic = 'force-dynamic'?
      but why would you even want it to be a server component if data is always dynamic

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

      @@ontanicolae1794 I dont want to expose fetched data to client. I want to return a ready HTML with latest data. The user doesnt need to know how and where do i get my data from. :)

    • @CistiC0987
      @CistiC0987 11 หลายเดือนก่อน +2

      ​@@ontanicolae1794
      Exactly my thinking. The caching especially that server cache is supposed to help your static pages. How is a real time dashboard a static component. I may be wrong here, so sorry if I sound patronizing, it was not my intention. I just think that it's not that everything should be built only with RSC components now. We should use them where they make sense.

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

    Love your content!❤ keep it up

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

      Thanks!

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

    subscribed and looking forward to more such videos...

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

      Thank you!

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

    Do caching libraries like react query do a similar thing?

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

      Great question! Libraries like react-query do have their own caching mechanisms, but those libraries have a slightly different use case. Client side data fetching libraries (like react query) are meant to run in the browser and maintain a long lived client side cache. React's cache function is meant to be short lived and only run while rendering RSCs.

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

    Awesome! But, why is this cache function in the React package, and not some Next package, especially if "vanilla" react doesn't even use it?

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

      Great question! Cache is in the main react package because it's useful for any React Server Component to use.

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

    is it accessible in nextjs or does declaring a server function behave the same without react-cache

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

      Hmm I'm not sure what you mean? Do you have an example in mind?

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

      @@RyanToronto Ooh nevermind i have gotten my answer after doing my research

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

    hello Ryan, how can I use the cache function, I don't know how to get it from the React Canary. Great video by the way that's why I want to use it in my project.

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

      The cache function is only available for React projects that use Server Components. If you're using RSC you can `import { cache } from "react";` and it will work. If you're not using RSC then cache is a no-op and doesn't do anything. Hopefully that helps!

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

      @@RyanToronto hello Ryan, how do I know if I am using RSC? What is an example of a Server Components?

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

      @@RyanToronto hello, it has something to do with the React Canary?

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

    how did you do to make async functional components? I though that was impossible!

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

      With React Server Components you can use async/await. These components only run on the server and have different features compared to regular React components... one of those features is they can use async/await.

  • @AnasKhan-fi7xk
    @AnasKhan-fi7xk 11 หลายเดือนก่อน

    I have one query,
    Then what's the benefit of using useCallback then in client

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

      Sorry, I'm not quite sure I understand your question. If you only have one query, and it's only called once, then there's probably not much benefit to using cache.

  • @АлексейАлексеевич-ш7ю
    @АлексейАлексеевич-ш7ю 11 หลายเดือนก่อน

    May be I am out of date, but can we use async with components ?

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

      Yup! With React server components (currently in the canary version of React) you can run async components on the server. It's pretty awesome.

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

    Hi, how can i revalidate a react cache function

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

      Hey there! This cache is very short lived, it only lasts for the life cycle of the request so there's no invalidation.

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

    👍

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

    its experimental cache ? is it safe to use

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

      It's in canary, but it's safe to use with React Server Components today.

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

      @@RyanToronto any other alternative my goal is to read url params on deeply nested seever side component like use prams but down

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

    I hope you can help me with this:
    when the unstable_cache from next becomes stable, both react and next cache wrappers will be imported as "cache"?
    if so, whats the best practice there, in case you need to use both cache functions? Or is it better to use next's version? :c thank you

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

      Good question!
      I'm not sure about the naming. If I had to bet, one of them might get renamed... but we'll have to see. They're both unstable/canary APIs right now.
      React's cache and Next's unstable_cache do different thins. React cache is per request, it's very short lived. Next's cache is shared across all requests, and can last until it is invalidated. So there are different situations when you'd want to use one over the other.

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

    what alternative for client server? t-t

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

      Hmm, not quite sure what you mean. Do you have an example in mind?

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

    @RyanToronto - this video is really timely because I’ve got a bunch of Prisma queries that aren’t cached.
    That being said, how does caching work with parameters that can change?
    Ex - a list of posts with each post component/card calling for views from the db

    • @RyanToronto
      @RyanToronto  11 หลายเดือนก่อน +2

      Great question! There will be different cache entries for each parameter, so if you have a cached getPost function and call getPost(1) and getPost(2), the function will run twice (once for parameter 1, and another time for parameter 2).

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

      @ryantoronto but it wouldn’t invalidate the cache for Id 1, correct? so other references to the cached function could still benefit from cached value of id 1?

    • @RyanToronto
      @RyanToronto  11 หลายเดือนก่อน +2

      @@rushabhsheth08 Correct! No matter how many times you call getPost(1) it will always return the result from the first time. getPost(1) has it's own cache :)

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

    but pretty much everyone is going to use a store anyways...