获取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)
this.nextTick()方法
当某些代码的执行需要延迟到dom元素重新渲染之后执行时,使用this.$nextTick()
- 组件的$nextTick(cb)方法,会把cb回调延迟到下一个DOM更新周期之后执行,通俗的理解是:等组件的DOM更新完成之后,再执行cb回调函数。从而保证cb回调函数可以操作到最新的DOM元素。
- 因为元素会出现和隐藏,隐藏的时候是没有refs值的,所以不能使用updated函数