mounted钩子中是否拿不到渲染后DOM的问题

来源:2-3 Vue 实例挂载的实现

cyabonc

2020-02-29

黄老,我知道数据更新后,会将渲染watcher推入异步queue中。这里我可以理解渲染是异步的。

但是当首次初始化一个Vue时,初始化渲染watcher时new Watcher(vm, updateComponent),后面生成vnode,patch vnode到真实DOM,这里我没有发现有异步的情况,所以在组件mounted钩子应该可以拿到渲染后DOM。

但是我平常写代码的时候,会有碰到在mounted钩子无法拿到渲染后DOM的情况。跟上面冲突了,所以很疑惑,这是为什么,请黄老指点迷津。

写回答

1回答

ustbhuangyi

2020-02-29

按现在的 Vue.js 设计在 mounted 钩子里是一定能拿到渲染的 DOM 的,除非子组件是异步渲染,你能举个反例我看看吗?

1
1
cyabonc
我试了试最近的代码,发现确实首次渲染都是同步的,能拿到DOM。这个问题是我几年前遇到的,忘了是什么情况,导致总喜欢在`mounted`钩子中先nextTick,再写DOM相关的操作。 看完课程这回必然记住了,感谢老师回答。
2020-03-05
共1条回复

Vue.js 源码深入解析 深入理解Vue实现原理

全方位讲解 Vue.js 源码,进阶高级工程师

4986 学习 · 1038 问题

查看课程