Error in mounted hook: “TypeError: Cannot read property ‘XXXXX‘ of undefined“

在使用Vue的iview组件时,遇到一个TypeError错误:'TypeError: Cannot read property 'initData' of undefined'。问题出在一个有v-if的控件上,移除或更改v-if为v-show解决了问题。原因可能是v-if在DOM未渲染完成时执行,导致引用undefined。理解v-if和v-show的差异对于避免此类错误至关重要。
摘要由CSDN通过智能技术生成

今天使用iview画页面时遇到一个很简单但是搞了很久的bug,加了一个控件

<user-select
 style="width:200px"
 @on-change="handleSelect"
 ref="user"
 v-model="form.userCode">
</user-select>

然后使用$refs调用组件属性

this.$refs.user.initData();

然后神奇的地方出现了,不管怎么该,一直报Error in mounted hook: "TypeError: Cannot read property 'initData' of undefined"错误,这个方法之前一直用的呀,各种猜想为啥在这里不行了。

最后发现一件神奇的事情,这个组件换个位置就可以正常工作了,然后放回原处就不行了,然后我想,难道这是iview的bug,某两个控件不能紧跟着放在一起?然后又转过头来想,不可能呀,整个vue生态都这么成熟了,不应该会存在这么低级的错误呀!

然后突然发现,这个控件是所在的位置多了一个v-if判断,难道是因为渲染的顺序导致的?

<Row :gutter="32" v-if="type=='2'">
 <Col span="12>
    <FormItem label&
  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值