账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    react+ antdesign pro 之 dva 数据处理的疑问?
    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
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部