Use Rematch to replace Dva

曾几何时 dva 和 roadhog 可谓是独领风骚,尤其是 dva 相比 redux 冗杂的使用方式简单了太多,可惜自一八年后都停更了,开启了KPI项目之路。并且每个死掉的项目没有任何说明,别家的项目换人维护或者停止更新好歹会在README里说明,但是在他们这里没有任何说明,只留下无数无人回复的ISSUE然后慢性死亡。


使用 session store 来做对比,可以看到 dva 使用的是 generate 方案,而 Rematch 使用的是 async

export default {
  namespace: 'session',
    state: {
      userinfo: null,
  },

  effects: {
      *loadUserinfo({payload}, {select, call, put}){
        const {data} = yield call(fetchUserInfo, payload);
      if (data){
          yield put({
          type: 'onLoadUserInfo',
          payload: data
        });
      }
    }
  },

  reducers: {
      onLoadUserInfo(state, payload) {
        return {...state, userinfo: payload};
    }
  }
}

Dva

export const session = {
    state: {
        userinfo: null,
    },

      effects: dispatch => ({
        async loadUserinfo(payload, rootState) {
            const {data} = await fetchUserInfo(payload)
            dispatch.session.onLoadUserInfo(data)
        },
    }),

    reducers: {
        onLoadUserInfo(state, payload) {
            return {...state, userinfo: payload};
        },
    },

}

Rematch

不过话说回来,现在使用到这种数据管理框架的机会还存在很多吗?虽然我也不是很懂为什么很多人把所有的数据全部塞到 redux 里面,有必要吗?

本文链接:https://note.lilonghe.net/post/use-rematch-to-replace-dva.html

-- EOF --