美文网首页
dva 笔记

dva 笔记

作者: A_1341 | 来源:发表于2018-10-19 13:59 被阅读0次
  • put 等同 dispatch
  • dva 默认所有 effect 为 takeEvery, 可以使用下面的写法实现 takeLatest 等
const takeLatest = { type: 'takeLatest' };

effects: {
  addDelay: [
          function*({ payload }, { call, put }) {
            yield call(delay, 100);
            yield put({ type: 'add', payload });
          },
          takeLatest,
        ],
}
  • dva fetch catch 到的错误还是会侵入 effect 函数, 使用下面的函数阶段, 或者内部 throw ,在 effect 函数中 catch 处理
if (response instanceof Error) {
        return
      }

  • effect 函数中, yield 后一定要使用 effect 辅助函数(call,put,all,select等)
  • 同时执行多个 yield, 使用辅助函数 all
 yield all([
        put({
          type: 'getListSuccess',
          payload: response,
        }),
        put({
          type: 'tableInfo/setPaginationInfo',
          payload: {
            tableName: payload.tableName,
            paginationInfo: {
              current: response.data.pageNum,
              pageSize: response.data.pageSize,
              total: response.data.total,
            },
          },
        }),
      ])
  • 同时执行多个 effects 并阻塞, 使用put.resolve
 yield all([
          put.resolve({
            type: 'getTaxList',
            payload,
          }),
          put.resolve({
            type: 'getCaseList',
            payload,
          }),
        ])

相关文章

网友评论

      本文标题:dva 笔记

      本文链接:https://www.haomeiwen.com/subject/upvyzftx.html