首页 > 其他分享 >redux-thunk与redux-promise

redux-thunk与redux-promise

时间:2022-12-10 22:45:18浏览次数:33  
标签:const resp 中间件 thunk promise redux

redux-thunk与redux-promise

  • redux-thunk与redux-promise都是一个中间件,目的:用来处理redux中的复杂逻辑,比如异步请求;

redux-thunk

  • 用法:
  • store里面提供了applyMiddleware方法来在初始化store的时候加载中间件
  //action生成器中的代码
  export const asyncAdd = ()=> {
    // 异步操作的返回的是一个函数,该函数可以接收一个dispatch函数(其实就是redux仓库暴露出的dispatch派发函数)
    return (dispatch)=> {
      setTimeout(()=> {
        dispatch({
          type: 'handel-add',
          payload: { xxx, xxx} // 接口返回的数据
        })
      }, 100)
    }
  }
  • 中间件概念并不复杂,它的出现时为了方便我们在Action执行之前可以插入一些操作或者新的功能,比如日志统计,信息打印,异步操作等等。
  • 先看一下没有加中间件的时候redux的流程:

redux-promise

  1. 初始化 yarn add redux-promise
  2. 引入应用中间件 import { createStore, applyMiddleware } from "redux";
  3. 应用中间件 const store = createStore(reducer, applyMiddeware(reduxPromise))
  • redux-promise的几种使用方法,以下都是在action生成器中的使用场景:
// * 直接返回一个promise
export function fetchStudents() {
    return new Promise(resolve => {
        setTimeout(() => {
            const action = setStudentAndTotal([{ id: 1, name: 'zc' }, { id: 2, name: 'gg' }],100)
            resolve(action);
        },1000)
    })
}


// 结合async await使用
export async function fetchStudents(condition) {
    const resp = await searchStudents(condition)
    return setStudentAndTotal(resp.datas, resp.cont);
}

// payload接收一个promise
export async function fetchStudents(condition) {
    return {
        type: actionTypes.setStudentAndTotal, 
        payload: await searchStudents(condition).then(resp => ({
            datas: resp.datas,
            total: resp.cont
        }))
    }
}

标签:const,resp,中间件,thunk,promise,redux
From: https://www.cnblogs.com/bingquan1/p/16972491.html

相关文章

  • Promise的理解和使用
    1.1实例对象和函数对象实例对象:new函数产生对象,称为实例对象简称对象。函数对象:将函数作为对象使用时,称为函数对象。functionFunc(){//Func只能称为函数}co......
  • ES6——Promise
    一、ES6——Promise1.1Promise介绍与基本使用Promise是ES6引入的异步编程的新解决方案。语法上promise是一个构造函数,用来封装异步操作并获取其成功或失败的结果。......
  • Redux 入门
    Redux是JavaScript状态容器,提供可预测化的状态管理。可以让你构建一致化的应用,运行于不同的环境(客户端、服务器、原生应用),并且易于测试。不仅于此,它还提供超爽的开发体......
  • js Promise用法示例
    1.情景展示在前端js源码时,遇到了大量的Promise对象的用法,看得是一脸懵逼,Promise到底是个什么?2.具体分析在实际开发过程中,我们往往会遇到这样的场景:以ajax请求为例,我......
  • React实战篇——四、在React中使用Redux
    四、在React中使用Redux1,Redux可以和很多库一起用,为了方便在React中使用Redux,我们需要单独安装react-redux2,展示组件和容器组件展示组件负责应用的UI展示,也就是组件如何......
  • promise不错的文章介绍
    另外收藏这篇http://www.alloyteam.com/2014/05/javascript-promise-mode/本篇,主要普及promise的用法。一直以来,JavaScript处理异步都是以callback的方式,在前端开发领域......
  • Redux底层源码
    Redux底层源码底层就是发布与订阅模式constcreareStore=(reducer)=>{letlist=[];letstate=reducer()constsubscribe=(callback)=>{list.p......
  • JavaScript Promises, async/await
    newPromise()的时候,传一个executor给Promise.letpromise=newPromise(function(resolve,reject){//thisfunctionwillexecutesimmediately})这个函数......
  • Redux-详解-解开谜底
    Redux-详解-解开谜底类似于vuex是一个全局状态树(跨组件通信),让组件通信的时候会变得极其方便。作用:集中式管理react应用中多个组件共享的状态Redux的设计理念组件......
  • Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation to curr
    报错:Uncaught(inpromise)NavigationDuplicated:Avoidedredundantnavigationtocurrentlocation:"/xxx".atcreateRouterError这个错误是说着在promise里捕获了......