崽崽的谷雨 2019-09-26 10:23 采纳率: 100%
浏览 1173
已采纳

dva.js怎么异步获取接口数据

这个是components里点击按钮,出发dispatch

 let p=feature.properties;
   let SmID=p.SmID;
  this.querySettlementPoint(1);//提交了一个effects
  let {SettlementPointData}=this.props.mapindex;//立即打印返回的数据是空的
  console.log(SettlementPointData)//结果为空
 setTimeout(()=>{
  let {SettlementPointData}=this.props.mapindex;//1000ms后打印
  console.log(SettlementPointData)//结果是有值的
 },1000)
 querySettlementPoint = (...payload) => { //获取沉降点详情
    // console.log(payload)
    this.props.dispatch({
      type: 'mapindex/querySettlementPoint',
      payload: {
        ids:payload
      }
    })
  }
```这个是moudels里effects


import { queryHttp,exportHttp,reqResult } from '../service/service'
import { apiUrl } from '../../public/config'
export default {
namespace: 'mapindex',

state: {
    clearMapId:'',
    cjListQueryShow:false,
    SettlementPointData:"",//沉降点详情
},

reducers: {
    setState(state, { payload }) {
      // console.log(payload,333,state)
        return { ...state, ...payload};
    },
},

effects: {
  *querySettlementPoint({payload},{call,put}){//沉降点详情接口
    const result = yield call(queryHttp, apiUrl.querySettlementPoint,payload)
    const res = reqResult(result.data);
    yield put({
        type: 'setState',
        payload: {
            'SettlementPointData':res.list[1]
        }
    })
},
},

subscriptions: {
    setup({ dispatch, history }) {  // eslint-disable-line

    },
},

};

问题就是在render里能拿到值,但是在render外拿不到,直接打印为空,但是1秒后打印就有了,我不想用定时器(接口响应事件很长),还有别的更好的方式吗?
我现在的疑问就是,在render里能拿到返会的值,我不想在render里用,想直接在点击之后就拿到并且操作,该怎么办。
  • 写回答

1条回答 默认 最新

  • dabocaiqq 2019-10-01 14:28
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值