首页 > 其他分享 >redux 对thunk的补充(createAsyncThunk和extraReducers)

redux 对thunk的补充(createAsyncThunk和extraReducers)

时间:2023-02-20 08:44:15浏览次数:28  
标签:异步 addCase extraReducers builder thunk state action redux

补充 thunk的编写模式

上个章节,我们提到了thunk。

我想了一下,有一个重点没说。

1.reducer就是用于处理数据的逻辑

2.reducer中不能放置任何异步的逻辑

基于上面两点,thunk必须存在。

但是上个视频介绍的手动编写thunk的方法还是太麻烦,

rtk提供了便捷的帮助函数,可以简化这个过程,形式如下:

注意incrementAsync 异步返回的值 就会形成payload!

export const incrementAsync = createAsyncThunk(
  "counter/awaitPromise",
  async (amount: number) => {
    const response = await Promise.resolve({ data: 10 });
    // The value we return becomes the `fulfilled` action payload
    return response.data;
  }
);

注意,构建异步thunk,需要传入具体的一个用于区分的action名字,他的格式是:slice名字/具体操作的名字。

在thunk里的第二个参数就是你的异步逻辑,现在我们一般都是用async函数来编写。

thunk像普通action一样使用。比如 dispatch(incrementAsync()。但这还不够。

因为我们还需要额外给这个thunk规定他如何处理state中对应数据,一般增加一个额外的reducer

范式如下:

 extraReducers: (builder) => {
    builder
      .addCase(incrementTenAsync.pending, (state, action) => {
        state.status = "loading";
      })
      .addCase(incrementTenAsync.rejected, (state, action) => {
        state.status = "failed";
      })
      .addCase(incrementTenAsync.fulfilled, (state, action) => {
        state.value += action.payload;
        state.status = "idle";
      });
  },

extraReducer就是一个函数,他的参数是builder,builder提供了根据异步thunk不同(promise)状态添加不同数据处理逻辑的工具addCase。

addCase就很简单,能在builder上链式调用,根据thunk不同状态做对应操作。

标签:异步,addCase,extraReducers,builder,thunk,state,action,redux
From: https://www.cnblogs.com/nulixuexipython/p/17136145.html

相关文章

  • Redux的理解?Redux的工作原理
    一、是什么React是用于构建用户界面的,帮助我们解决渲染DOM的过程而在整个应用中会存在很多个组件,每个组件的state是由自身进行管理,包括组件定义自身的state、组件之间的......
  • redux-toolkit详解
    简述redux-toolkit是 Redux官方强烈推荐,开箱即用的一个高效的Redux开发工具集,本质是对redux的封装,方便我们写reducer、actioncreator和继承类似thunk的中间件。......
  • 简单解释 什么是Redux
    我已经有一段时间没有写任何东西了。我收到了很多关于在Redux上创建教程的消息!所以就在这里。我花了很多天时间使本教程更加简单易懂。现在让我们开始吧^_^在进入什么是R......
  • react状态管理redux
    redux产生的历史背景当我们的前端系统变得复杂,包含众多子组件,特别是包含很长一条子组件链时。我们的state管理就会非常繁琐,例如如下图,如果Child11需要用到App里的stat......
  • 学习笔记jira项目60-react-redux
        ......
  • P07:通过Input体验Redux的流程
    Redux基础​​阐述​​​​增加Input响应事件​​​​源码​​​​创建Action​​​​store的自动推送策略​​​​让组件发生更新​​​​总结​​​​demo​​​​初......
  • Redux 教程3 应用的结构
    应用的结构这一篇实际上和快速上手的内容差不多,程序范例里其实就是多了一个thunk,另外介绍了reduxdevTools应该怎么使用。在计算机编程中,thunk是一个用于向另一个子......
  • Redux 教程2 概述和概念吖
    需要两个插件吖,ReactDevToolsExtensionforChrome和ReduxDevToolsExtensionforChrome(还有forFireFox版本捏)action纯纯对象reducer纯纯函数土木er纯纯......
  • Redux 教程1 快速上手
    文档翻译来的用Typescript来的不定期更新来的环境配置,我看了一下,最好的配置方法是npxcreate-react-appmy-app--templateredux-typescript但问题是,我只是想在旧......
  • react 中使用redux的createStore 创建公用变量
    import{createStore}from'redux'exportconststore=createStore(addTodo,0);functionaddTodo(state=0,{type,num=1}){switch(type){......