一、实例代码
父组件:
<template> <div id="parent"> <child></child> </div> </template> <script> import child from './components/child' export default { name: 'parent', components: { child }, beforeCreate() { console.log('I am parents beforeCreated'); }, created() { console.log('I am parents created'); }, beforeMount() { console.log('I am parents beforeMount'); }, mounted() { console.log('I am parents mounted'); } } </script>
子组件:
<template> <div class="child"> child </div> </template> <script> export default { name: 'child', beforeCreate() { console.log('I am child beforeCreated'); }, created() { console.log('I am child created'); }, beforeMount() { console.log('I am child beforeMount'); }, mounted() { console.log('I am child mounted'); } } </script>
执行结果:
二、结论
我们从而可以得出父子组件的执行顺序为:
- 父组件beforeCreated
- 父组件created
- 父组件beforeMounted
- 子组件beforeCreated
- 子组件created
- 子组件beforeMounted
- 子组件mounted
- 父组件mounted
注意:
- 父组件的mounted是在最后执行的。
- 因此在子组件的mounted中渲染父组件在mounted阶段请求的数据,是会无反应的。因为子组件mounted渲染数据会发生在父组件mounted请求数据之前。