父组件请求的数据传递给子组件的异步错误

子组件的计算属性报错 [Vue warn]: Error in render: “RangeError: Invalid array length”
在这里插入图片描述 这里的pageNo, continues, totalPages 均为父组件传递给子组件的数据,出现错误的原因是这些数据是父组件通过axios请求的得到的,传递给子组件的时候数据可能还没有从服务器发送回来,所以pageNo, continues, totalPages为undefined,计算属性startAndEndNum()对undefined进行运算,就会报错。

 props: ["total", "pageSize", "pageNo", "continues","totalPages"],
startAndEndNum() {
      const { pageNo, continues, totalPages } = this;
      //连续页码的开始数字|结束数字
      let start = pageNo - parseInt(continues / 2);
      let end = pageNo + parseInt(continues / 2);
      //还有一些不符合条件的需要纠正数字
      //pageNO 1  2 
      if (start <1) {
        start = 1;
        end = continues;
      }
      //pageNo 32 33
      if (end > totalPages) {
        end = totalPages;
        start = totalPages - continues + 1;
      }
      //当前这个计算属性。需要把开始与结束数字返回,只能返回一个对象
      //底下的对象:KV一致省略V
      return [start, end]  ;
    }

解决的办法也很简单,就是给这些undefined的属性赋初始值,等异步请求结束后再赋请求回来的数据,由于props的属性是单向数据流,故要单独用变量保存这些props属性再赋初值。

let page = pageNo||0
let total = totalPages||0
let num = continus||0

用page, total ,num来替代pageNo, continues, totalPages 去计算startAndEndNum

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值