dva.js(and design)实现dispatch的回调函数

Song • 1988次浏览 • 0个评论 • 2018-07-23 13:35:52

一、在dispatch中使用callback

dva@2中实现回调可以将回调函数作为参数dispatch

dispatch({
   type: 'model/fetch',
   payload: {
      resolve,
      id: userId,
   },
   callback: res => {
      console.log(res);
   }
})

然后在modeleffects中这样写:

*fetch({ payload, callback }, {call}) {
  const response = yield call(services.fetch, payload);
  if (response.code === 0) {
    yield put({
      type: 'reload',
      payload: response,
    });
  if (callback) callback(response);
}

二、在dispatch中使用then

如果在dva@1中要实现回掉可以用Promise实现:

new Promise((resolve) => {
    dispatch({
       type: 'model/fetch',
       payload: {
          resolve,
          id: userId,
       }
    })
}).then((res) => {
    console.log(res);
})

然后在modeleffects中这样写:

...

*fetch({ payload }, { call }) {
  const { resolve } = payload;
  const { data } = yield call(services.fetch, payload);
  if (data.code === 0) {
    // 通过resolve返回数据,返回的数据将在Promise的then函数中获取到
    !!resolve && resolve(data.data);
}
提交评论
要回复文章请先登录注册
用户评论
  • 没有评论
    公告
    中国晚上好,随时随地分享前沿科技,好吃好玩,有趣有料的新鲜事;本站可以分享资源,技术,观点,态度;同时希望大家做一个文明的分享者!
    广告
    pytorch中文网