vue中在mounted使用$refs获取不到DOM元素
- 前言
- 解决方案
- 1、通过使用$nextTick来获取
- 2、updated中获取
前言
在使用ref的时候,在mounted中通过$ref获取节点是获取不到报undefined
this.$refs.xx 为 undefined
解决方案
在mounted钩子中加载回来的数据不会在这个阶段更新到DOM中
1、通过使用$nextTick来获取
n e x t T i c k 是在下次 D O M 更新循环结束之后执行延迟回调,在修改数据之后使用 nextTick是在下次DOM更新循环结束之后执行延迟回调,在修改数据之后使用 nextTick是在下次DOM更新循环结束之后执行延迟回调,在修改数据之后使用nextTick,则可以在回调中获取更新后的DOM。
this.$nextTick(function () {// 调用$nextTick函数
let dom1 = this.$refs.test;// o了
})
2、updated中获取
updated阶段
在实例更新完成后被调用,此时实例的数据已经重新渲染到DOM上。可以在这个阶段对DOM进行操作,但要避免无限循环的更新。
updated () {
this.contentHight = this.$refs.content.offsetHeight
},
如果未加载完成可以使用
updated () {
this.$nextTick(() => {
this.contentHight = this.$refs.content.offsetHeight
})
},