ref的引用

文章讲述了在Vue中如何利用ref属性获取DOM元素和组件实例,特别是在数据更新和DOM渲染的生命周期中的注意事项。提到了在beforeUpdate和updated阶段,DOM可能未及时渲染导致this.$refs无法获取到最新引用的问题,并推荐使用this.$nextTick()来确保在DOM更新后执行相关操作。
摘要由CSDN通过智能技术生成

获取DOM元素或者组件的引用

使用ref来获取dom的引用

<h1 ref="myh12"> App根组件</h1>

在这里插入图片描述

在这里插入图片描述

使用ref来获取组件实例

1、给父组件中的子组件加ref名字

      <left ref="comleft"></left>

2、父组件中添加触发子组件ref的事件

    <button @click="tryReset">重置left组件的count值为0</button>
methods:{
    tryReset(){
      this.$refs.comleft.resetCount()
    }
}

在这里插入图片描述

注意ref的使用问题(beforeUpdate之后(数据更新,DOM元素未渲染),Update之前(数据更新,DOM元素重新渲染)

  • 父子组件使用ref时,会出现数据变成最新的,但是页面并未来得及渲染即dom并未及时渲染,this.refs.dom名字=undefined
  • 比如文本框的出现与消失,如设置页面上面文本框
this.visible=true

数据是更新可以让文本框展示了,但是文本框的展示还需要一个重新渲染的过程,在还未展示在页面上之前,

console.log(this.$refs.inputs)   //undefined

在这里插入图片描述

this.nextTick()方法

当某些代码的执行需要延迟到dom元素重新渲染之后执行时,使用this.$nextTick()

在这里插入图片描述

  • 组件的$nextTick(cb)方法,会把cb回调延迟到下一个DOM更新周期之后执行,通俗的理解是:等组件的DOM更新完成之后,再执行cb回调函数。从而保证cb回调函数可以操作到最新的DOM元素。
  • 因为元素会出现和隐藏,隐藏的时候是没有refs值的,所以不能使用updated函数
  • 在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值