原文:https://blog.csdn.net/qq_34507902/article/details/102712076
今天遇到了一个奇怪的bug,就是当进行父子组件传值的时候,在父组件打印变量当时候是有数据的,但是在子组件打印的时候却显示数据为空。但是如果修改了子组件的源码,在进行热编译之后,子组件反而可以获取到数据。这才让我意识到vue的子父组件加载是存在差异的。
执行顺序如下:
- 父组件 created
- 子组件 created
- 子组件 mounted
- 父组件 mounted
如果有多个子组件:
- 父组件created钩子结束后,依次执行子组件的created钩子
- 多个子组件的created执行顺序为父组件内子组件DOM顺序
- 多个子组件的mounted顺序无法保证,跟子组件本身复杂程度有关
- 父组件一定在所有子组件结束mounted钩子之后,才会进入mounted钩子
问题解决方案:
1.用watch监视props属性,将newdata赋值进data中
2.在一个工程里,子组件总最好不要写过多逻辑和对传入数据的处理