react使用dva解决接口请求时间过长页面接收不到数据问题

一、什么是dva

dva 首先是一个基于 redux 和 redux-saga 的数据流方案,然后为了简化开发体验,dva 还额外内置了 react-router 和 fetch,所以也可以理解为一个轻量级的应用框架。具体永发特性请看dva官网api.(我的理解就是react框架中加了redux数据管理模块,只不过是集成进去了,不用手动去创建redux的action,store等等)。

二、上述问题解决方案

我在用这个react+dva.js的时候,遇到了一个问题,用fetch发送请求,如果速度很快,页面里用this.props很快能拿到立即渲染,如果接口很慢的话会出现各种问题

1.如果用接口得数据进行了一些判断,因为还没有拿到数据会导致页面直接报错。

2.会导致页面空白对用户体验造成了很不好的影响。

解决方案:

1.在组建总使用this.propsdispatch市可以加上。.then()的方法。dva支持链式操作。

 this.props.dispatch({//提交接口请求
      type: "settlstatistics/querytSettlstatistics",
    }).then((res) => {
      var data=res.payload.number;
      if(data.msg=="success"){
        this.setState({
          number:data.data
        })
      }else{
        message.error(data.msg)
      }
   
    })

2.在model里要返回结果很重要(要不然拿不到)。

 *queryCjtjScatter({ payload }, { call, put }) {
            const result = yield call(
                queryHttp,
                apiUrl.queryCjtjScatter,
                payload
            );
            const res = reqResult(result.data);
           return yield put({//记住return
                type: "setState",
                payload: {
                    cjtjData: res.data,
                },
            });
        }

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

崽崽的谷雨

漫漫前端路,摸爬滚打

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值