关于第一个问题:
对组件本身来说没区别。非说有有区别的话也就是你要两个里面都写 $nextTick
,created
里那个会比 mounted
里的先触发。
如果有异步子组件的情况下,有点儿区别,下面会说。
关于第二个问题:
如果是同步子组件,mounted
就已经能保证了同步子组件都加载完了。因为对于一个页面来说,第一次 DOM 更新循环结束,也就是 mounted
的时候。
同步顺序是 parent created
→ child created
→ child mounted
→ child $nextTick
→ parent mounted
→ parent $nextTick
。
如果是异步子组件,你需要在 mounted
里写 $nextTick
,但也并不能完全保证子组件加载完毕,因为异步子组件里还可以再套异步孙子组件。
总而言之,同步子组件,写 created
+ $nextTick
和写 mounted
都行;异步子组件,除非是在父组件中直接操作异步子组件的生命周期钩子、或者子组件通过 $emit
的方式通知父组件,否则单纯靠父组件自己,是无法百分百保证的。
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…