Join egghead, unlock knowledge.

Want more egghead?

This lesson is for members. Join us? Get access to all 3,000+ tutorials + a community with expert developers around the world.

Unlock This Lesson
1×
Become a member
to unlock all features

Level Up!

Access all courses & lessons on egghead today and lock-in your price for life.

Autoplay

    Pass React Components a useTransition-Wrapped, State-Setting, Callback

    reactReact
    ^0.0.0-experimental-b53ea6ca0

    The useState functions we wrap in useTransition function wrappers can be passed around to components like any callback. Instead of making all of your components aware of Concurrent Mode, you can provide wrapped callbacks and continue compatibility with both legacy and future React code.

    Code

    Code

    Become a Member to view code

    You must be a Pro Member to view code

    Access all courses and lessons, track your progress, gain confidence and expertise.

    Become a Member
    and unlock code for this lesson
    orLog In
    Discuss

    Discuss

    Transcript

    Transcript

    Instructor: 0:00 At this point, you know everything that anyone knows about React Suspense -- createRoot, Suspense, SuspenseList, useTransition and useDeferredValue. That is all that there is to know. You might be sitting there thinking, "I don't know how to pull it all together into an application." We're going to continue to build.

    0:24 The second half of this is going to be with the breaks off a little bit. We're going to build this app feature by feature. Instead of talking specifically about each of these APIs in excruciating detail, we'll build features out to get a better sense of how Suspense actually works in a real application.

    0:46 Let's start by using Suspense to select a Pokemon on click. Let's jump down to our Pokemon collection component. We'll take a prop onClick and we'll insert a button into this LI, button type="button". Here, we'll call onClick inside of an anonymous function. We want to call it with the Pokemon ID to reformat that.

    1:26 If you remember correctly, this API doesn't have an ID for Pokemon, but it does have a URL. We can do something really hacky here. If we split on all of the forward slashes of URL, I know that the ID of this Pokemon is in the sixth element of that array. Again, it's not pretty, but it does get us an ID.

    1:53 Now, we just need to write that function where it's called. We pass onClick as a prop and we'll just copy and paste this from another place. Snatch and grab. The only difference is that we'll be taking an ID and using that to fetch the Pokemon. Format, save.

    2:22 Now we see a bunch of buttons. If all of my code is correct, we can skip to each one with all of our little pending states intact, regardless of how fast or slow our connection speed is.

    2:46 The cool thing about this is that Pokemon collection doesn't have to be, at all, aware of what this callback does. We simply call with the ID that we have. Then, at our application level, we can wrap it in all of the smurks that needs to have in order to get these really nice transitions.