详解 redux 中的异步处理

主要通过applyMiddleware函数,借助redux中间件来处理,即通过中间件模式将原始dispatch函数进行封装处理,形成洋葱模型,将原始dispatch函数作为参数传递,在处理异步事件时,再调用原始dispatch函数修改数据状态。

redux中的异步处理流程通常如下:

  • 在异步操作开始前,发送action,用来表示要发起异步操作,用户界面应该有所提示
  • 在异步操作结束后,发送action,用来表示异步操作结束,根据异步操作的结果,对store中的数据和用户界面进行更新

redux中通常使用中间件来进行异步处理,常用的中间件包括 redux-thunk 或 redux-saga。

redux-thunk 使用高阶函数实现, 判别action的类型,如果action是函数,就调用这个函数,书写较为简单 。

  • 使用redux-thunk

    • 安装: npm install redux-thunk
    • 创建store时使用 applyMiddleware 开启thunk中间件
    • 使action可以返回函数, 使用dispatch提交action
    // 异步 action
    const action = () => dispatch => (
      Promise.then(res => dispatch('同步action'))
    )
    
  • redux-saga

    • 创建 generator 函数ÿ
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redux异步操作可以通过间件来处理。在Redux间件是一种函数,它可以拦截派发到Store的Action,并在必要时对其进行操作。常见的Redux间件有Redux Thunk、Redux Saga和Redux Observable等。 其Redux Thunk是Redux官方提供的间件之一,它允许Action Creator返回一个函数而不是一个对象。在这个函数,我们可以执行异步操作并在操作完成后再派发一个Action来更新应用程序状态。 例如,我们可以编写一个异步Action Creator来获取用户列表: ```javascript const fetchUsers = () => { return (dispatch) => { dispatch({ type: 'FETCH_USERS_REQUEST' }); return fetch('/users') .then(response => response.json()) .then(data => { dispatch({ type: 'FETCH_USERS_SUCCESS', payload: data }); }) .catch(error => { dispatch({ type: 'FETCH_USERS_FAILURE', payload: error }); }); }; }; ``` 在上面的代码,我们通过返回一个函数来处理异步操作。在函数,我们首先派发一个FETCH_USERS_REQUEST Action来表示开始获取用户列表,然后执行异步操作。当异步操作完成后,我们再派发一个FETCH_USERS_SUCCESS Action来更新应用程序状态,并将获取到的用户列表作为payload传递给Action。如果异步操作失败,我们将派发一个FETCH_USERS_FAILURE Action来通知应用程序。 通过这种方式,我们可以在Redux处理异步操作,并保持应用程序的状态可预测性和一致性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值