曾几何时 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 里面,有必要吗?