this.$refs.gridWrap undefined

vue获取dom元素时,打印this.$refs可以看到想要获取的元素gridWrap,但是打印this.$refs.gridWrap确实undefined

clipboard.png
代码:

<div ref="gridWrap">

let gridHeight=this.$refs.gridWrap;
            console.log(this.$refs); //正常
            console.log(this.$refs.gridWrap); //undefined
阅读 9.7k
3 个回答

this.nextTick(() => { this.$refs.xxx })

之前答案有问题,参考楼下的nextTick()

在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM。

// 修改数据
vm.msg = 'Hello'
// DOM 还没有更新
Vue.nextTick(function () {
  // DOM 更新了
})

vue更新dom是异步的,并不是数据变化导致的视图更新会立刻同步,所以放在nextTick的回调函数中能获取某个更新周期后的dom数据

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题