很多人說 Redux 代碼多,開發(fā)效率低。其實(shí) Redux 是可以靈活使用以及拓展的,經(jīng)過充分定制的 Redux 其實(shí)寫不了幾行代碼。今天先介紹一個(gè)很好用的 Redux 拓展—— redux-amrc。它可以幫助我們使用更少的樣板代碼發(fā)起異步 action。

低效的過去

一般情況下,為了清楚地記錄異步的過程,我們需要使用 三個(gè) action 來記錄狀態(tài)變化。通常,我們的代碼會(huì)是這樣:

const LOAD = 'redux-example/auth/LOAD';const LOAD_SUCCESS = 'redux-example/auth/LOAD_SUCCESS';const LOAD_FAIL = 'redux-example/auth/LOAD_FAIL';

寫完這么多 action,還要在異步的前后發(fā)起它們,當(dāng)然這時(shí)你可能會(huì)用中間件,所以你的代碼最少也會(huì)是這樣:

export function load() {
  return {
    types: [LOAD, LOAD_SUCCESS, LOAD_FAIL],
    promise: (client) => client.get('/loadAuth')  };}

發(fā)起 action 后,還要編寫 reducer 來處理這些 action,以改變狀態(tài):

export default function reducer(state = initialState, action = {}) {
  switch (a