子组件通过v-if 来控制显示隐藏与 ref ,DOM渲染的问题!

本文探讨了在Vue.js中使用v-if控制子组件显示隐藏时,遇到的子组件this.$refs为undefined的问题。详细分析了原因,并提出了两种解决方案:一是使用定时器(不推荐),二是利用this.$nextTick确保DOM更新后操作$refs。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注释:通过v-if来控制子组件显示隐藏,然后发现子组件的this.$refs都是undefind.的问题

首先是父组件通过 poprs来进行传递数据控制子组件的显示隐藏。

 

子组件再父组件的引用

 

子组件是通过该属性然后v-if来控制显示隐藏。

然后操作就是获取子组件的$refs的DOM元素,结果发现获取不到,再mothed里面也是获取不到的。

后面查资料后发现,refs不是动态,需要等页面渲染完成后才能拿到DOM元素。

问题清晰后,有几种方法可以解决,就是解决v-if当中渲染完成后再进行操作ref。

1,可以采用 定时器(不推荐)

2,用this.$nextTick来进行判断当前是否数据和dom已经加载完成了

可以再请求数据的后面then里面写,也可以写在数据获取到后外面方法上面,都是可以实现的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值