vue 父组件给子组件传值,在 dom 树上直接判断导致报错问题解决

本文介绍了在Vue项目中遇到的数据加载问题,即在DOM树构建时因数据未完全获取导致的错误。通过分析问题原因,发现是在尝试访问未填充的数据。解决方案是使用计算属性来确保在数据加载完成后才进行渲染。作者最初尝试使用$nextTick,但未能解决问题,最终通过计算属性getodayAlarmTypeNum成功地解决了问题,确保了组件在正确的时间渲染数据。
摘要由CSDN通过智能技术生成

初始写法

在这里插入图片描述

报错

在这里插入图片描述

问题原因

dom 树加载之初,还没拿到数据,就加载了,因此在上边判断取不到值,导致页面构建不出来

解决方案

开始我放在$nextTick里也不行,原因可以参考这篇文章
然后使用计算属性解决了问题,修改后的代码

		<vue-seamless-scroll
          v-if="getodayAlarmTypeNum.length >= 10"
          :data="getodayAlarmTypeNum"
          :class-option="classOption"
          class="warp"
        >
          <li v-for="(item, index) in getodayAlarmTypeNum" :key="index">
            <span>{{ item.alarmTimeStr }}</span>
            <span v-if="item.status == 0" style="color:#E64444">{{
              item.statusStr
            }}</span>
            <span v-if="item.status == 1" style="color:#32B8FE">{{
              item.statusStr
            }}</span>
            <span v-if="item.status == 2" style="color:#7183FC">{{
              item.statusStr
            }}</span>
            <span>{{ item.remark }}</span>
          </li>
        </vue-seamless-scroll>
	props: {
    todayAlarmTypeNum: {
      type: Array
    }
  },
	computed: {
    getodayAlarmTypeNum: function() {
      var data = this.todayAlarmTypeNum.find(
        item => item.arithmeticId === this.activeIndex
      ) || { alarmList: [] };
      return data.alarmList;
    }
  },
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值