分析vue取数组值报错的问题

有时我们给子组件传递一个数组,在绑定到属性上,会出现错误:

看问题

我们来看下面的问题:

<template>
  <div>
         <img :src="goods.length>0 ? goods.[0].image :null" alt="" srcset="" width="100%">
  </div>
</template>

<script>
export default {
    name:'Floor1',
    props:{
        goods:Array
    },
}
</script>

<style>
</style>

但是,界面上图片已经加载正常了

为什么?

我们明明已经传递了数据了,为什么是null呢?
为什么是null,还能正确显示呢?
为什么正确显示还会报错呢?

这是因为,子组件create之时, props里的数据还没有读取, 此时渲染引擎监测到数据的绑定, 去寻找数据, 就会报错. 很快的组件初始化到了mount阶段,此时已经可以读取到props了,所以通过绑定系统,把数据渲染出来了

如何解决?

通过一个三元运算符来判断

<img :src="goods.length>0 ? goods[0].image :null" alt srcset width="100%" />
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值