dva数据流effects获取返回值的几种方式

  1. callback回调函数
    // models
    effects: {
      *add({ payload, callBack }, { call, put, select }) {  // eslint-disable-line
          const response = yield request('/apis/serverless/add', {
              method: 'GET',
              data: payload,
          });
          const num = yield select(state => state.num + 1);
          if (response && response.success) {
              callBack(response.data)
          } else {
              Message.error(response.msg);
          }
      },
     }
    // 组件内
    	this.props.dispatch({
    		type:'preCenter/add',
    		payload: params,
    		callBack: result =>{
    			console.log(result);
    		}
    	})
    
    
  2. 利用prmise改写
    // models
    effects: {
        *addAfter1Second(action, { call, put }) {
          yield call(delay, 1000);
          const response = yield put({ type: 'add' });
          resolve(response)
        },
      },
    // 组件内
    new Promise((resolve) =>{
    	this.props.dispatch({
    		type: 'addAfter1Second',
    		payload: params,
    	})
    }).then(result => {
    	console.log(result)
    })
    
  3. 使用then方法
    	// models
    	reduers: {
    		add(state, { payload }){}
    	},
    	effects: {
    	    *addAfter1Second(action, { call, put }) {
    	      yield call(delay, 1000);
    	      yield put({ type: 'add' });
    	    },
    	  },
    	// 组件内
    	this.props.dispatch({
    		type: 'addAfter1Second',
    		payload: params,
    	}).then(result => {
    		console.log(result)
    	})
    
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值