【Vue2报错系列】解决Uncaught TypeError: Cannot read properties of undefined (reading ‘length‘)

解决 Uncaught TypeError: Cannot read properties of undefined (reading ‘length’)


最近,在做项目时遇到了 length 的报错

因为页面需要显示存在的个数,所以需要通过 length 来渲染数据;
但在运行的时候,出现了以下bug

在这里插入图片描述

created() {
    setInterval(() => {
      this.current++;
      if (this.current >= this.datas.photos.length) {
        this.current = 0;
      }
    }, 3000);
    }

在网上一番搜索之后,试了几种,发现报错的原因是:

原因是后台在返回数据时是需要时间的,但在初始化时,并没有给一个空的数组, 所以当调用 .length 方法时,这时后台数据还没有返回回来,此时它不是数组 就会报错。

总结: vue的数据绑定在刚开始只是和内存建立联系,并没有真正的和后台的数据挂上钩,所以一开始的 this.datas.photos 只是一个空值,必须在之前加个 if判断,确保有值以后再开始计算length

created() {
    setInterval(() => {
      this.current++;
      if (this.datas.photos) {
        if (this.current >= this.datas.photos.length) {
          this.current = 0;
        }
      }
      }
    }, 3000);
    }

报错就没有了

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值