- 21
- 0
看了很多dva的示例代码,包括dva网站推荐的,发现一个问题:在进行比如用户信息的增加、删除、修改时,每次处理完数据,列表的刷新如何处理? 我看大部示例都是重新从服务端获取,这明显太低效率,有的是客户端更新state,但感觉也不是很好用:
*remove({ payload: id }, { call, put }) {
yield call(usersService.remove, id);
yield put({ type: 'reload' });
},
*patch({ payload: { id, values } }, { call, put }) {
yield call(usersService.patch, id, values);
yield put({ type: 'reload' });
},
*create({ payload: values }, { call, put }) {
yield call(usersService.create, values);
yield put({ type: 'reload' });
},
*reload(action, { put, select }) {
const page = yield select(state => state.users.page);
yield put({ type: 'fetch', payload: { page } });
},
我觉得是否应该提供一个自动或半自动的将变更的数据更新 客户端数据的能力?比如,服务端api执行成功后,可以通过类似
effects: {
*remove({ payload: id }, { call, put }) {
const {data} = yield call(usersService.remove, id);
if (data && data.success) {
yield put({
type: 'delSuccess',
payload
});
}
},
*Modify({ payload: values }, { call, put }) {
const {data} = yield call(usersService.modify,values);
if (data && data.success) {
yield put({
type: 'modifySuccess',
payload
});
}
},
}
---
reducers: {
modifySuccess(state, action){
state.list.update(action.payload); //自动更新state数据
return {...state, loading: false};
},
delSuccess(state, action){
state.list.remove(action.payload); //删除已经删除的state数据
return {...state, loading: false};
}, 0
打赏
收藏
点击回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
