乐趣区

关于redux:中间件

什么是中间件?
中间件就是插在源到指标之间的一段逻辑(个别为函数,比方 redux)

redux 中源为页面,指标为 store 中的 state,通过 dispatch 将页面中的数据反映到 store 中

koa 中源为 request,指标为 response,

redux 中在 dispatch 数据到 store 只调用了 dispatch 这个函数,所以只能对这个函数进行革新,两头去插入中间件。

为什么 redux 须要中间件?
dispatch 函数第一句话:

    if (!isPlainObject(action)) {
      throw new Error(
        'Actions must be plain objects.' +
          'Use custom middleware for async actions.'
      )
    }

isPlainObject 函数的目标是查看 action 是不是对象字面量或者 new object() 结构进去的对象,其余的比方 action 为函数,redux 间接报错。比方异步申请,须要将从接口申请到的数据放到 redux。
咱们能够间接发动异步申请,而后将数据 dispacth 到 redux 里
redux@4.0.0 shopping-cart actions/index.js

export const checkout = products => (dispatch, getState) => {const { cart} = getState()

  dispatch({type: types.CHECKOUT_REQUEST})
  shop.buyProducts(products, () => {
    dispatch({
      type: types.CHECKOUT_SUCCESS,
      cart
    })
  })
}

为了对立写异步申请,将申请函数放在一个文件里,这样不会显得芜杂。然而 dispatch 跟 getState 怎么拿到,connect 后能够拿到 dispatch,getState 拿不到,只能通过 mapStateToProps 传递 state. 这么操作比拟麻烦,在中间件中对立解决就不须要每次调用传递 dispatch getState。怎么对一个函数函数革新 插入中间件?

深刻了解洋葱模型中间件机制
Koa 框架教程

退出移动版