 Hey, I'm Jan Tastic. This is React Holiday Day 19. Today we're talking about asynchronous actions in use reducer. Man, that's a lot of words, but it's not a lot of code motion. So just just bear with me. We're going to get through this together. Super easy. Here's a way that you can do it. Now, the goal is, is that I'd like to move this, these implementation details up into my use reducer. As this grows, I don't want to be calling fetch everywhere and then like calling the actions as a result of that, I'd rather just dispatch an action and have it care about all of the implementation of how that data actually gets on state. So we're actually going to take this and we're just going to move it up. Move, move, move, move, move, move, move, move. Where's it going to land? Right here. Okay, now I'm going to copy the action that we had before and format this just a little bit so I can read it. We're going to call this one fetch and replace. Now this is a terrible name, but just just for the sake of this demonstration. And as a payload, it's going to take a URL. So here we'll take action dot payload. And then we're going to take our JSON and then dispatch another action replace Pokemon with the JSON that we get back. Cool, cool, cool. Now let's copy this and jump back down into our on click. We're going to change this to fetch and replace Pokemon and the payload will be our Pokemon URL. Let's save that and see how we did. Failure. The reason why is that we actually need to always return state. So I'm just going to return the previous state. So the state that we got, I'm just going to send that back out while we do the work of fetching the next Pokemon. Let's save that and see if it works now. Boom. We got it. So that's one way that you could do asynchronous actions in use reducer.