浅谈redux(二)

Redux中间件与异步操作

Redux的使用方式是用户发出 Action,Reducer 函数算出新的 State,View 重新渲染。但是应该考虑到异步操作怎么执行,Action 发出以后,Reducer 立即算出 State,这叫做同步;Action 发出以后,过一段时间再执行 Reducer,这就是异步。这时就需要使用中间件(middleware)进行异步操作。

中间件就是一个函数,对store.dispatch方法进行了改造,在发出 Action 和执行 Reducer 这两步之间,添加了其他功能。

1.中间件的使用
  • applyMiddlewares()

    首先你需要知道applyMiddlewares()方法,它是 Redux 的原生方法,作用是将所有中间件组成一个数组

export default function applyMiddleware(...middlewares) {
  return (createStore) => (reducer, preloadedState, enhancer) => {
    var store = createStore(reducer, preloadedState, enhancer);
    var dispatch = store.dispatch;
    var chain = [];

    var middlewareAPI = {
      getState: store.getState,
      dispatch: (action) => dispatch(action)
    };
    chain = middlewares.map(middleware => middleware(middlewareAPI));
    dispatch = compose(...chain)(store.dispatch);

    return {...store, dispatch}
  }
}

上面代码中,所有中间件被放进了一个数组chain,然后嵌套执行,最后执行store.dispatch。可以看到,中间件内部(middlewareAPI)可以拿到getState和dispatch这两个方法。

  • Redux-thunk中间件

Redux-thunk是解决异步操作的插件,安装Redux-thunk后。看看怎样使用它

import { createStore,applyMiddleware } from 'redux'
import thunk from 'redux-thunk'
import reducer from './reducer'

let store = createStore(reducer,applyMiddleware(thunk))

export default store

在action中进行异步操作

import { cartList,del,putCart } from '../../api/request'
export default {
    getList(){
        return dispatch => {
            cartList().then(res => {
                dispatch({
                    type:"CART",
                    list:res
                })
            })
        }
    }
  }

以上就是redux进行异步操作的过程。详细说明请阅读:中间件与异步操作

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值