Javascript 如何创建Vue.js组件()顺序集?
给定两个组件,都加载到第三个组件中,是什么决定了为每个组件创建的生命周期的启动顺序 顶级组件Javascript 如何创建Vue.js组件()顺序集?,javascript,vue.js,vue-component,Javascript,Vue.js,Vue Component,给定两个组件,都加载到第三个组件中,是什么决定了为每个组件创建的生命周期的启动顺序 顶级组件 <template> <div> <start-date-filter /> <end-date-filter /> </div> </template> <script> import StartDateFilter from './StartDateFilter.vue'
<template>
<div>
<start-date-filter />
<end-date-filter />
</div>
</template>
<script>
import StartDateFilter from './StartDateFilter.vue';
import EndDateFilter from './EndDateFilter.vue';
export default {
components: {
StartDateFilter,
EndDateFilter
}
}
</script>
<script>
export default {
created() {
console.log('made it first');
}
}
</script>
<script>
export default {
created() {
console.log('made it second');
}
}
</script>
从“/StartDateFilter.vue”导入StartDateFilter;
从“/EndDateFilter.vue”导入EndDateFilter;
导出默认值{
组成部分:{
StartDateFilter,
EndDateFilter
}
}
StartDate过滤器组件
<template>
<div>
<start-date-filter />
<end-date-filter />
</div>
</template>
<script>
import StartDateFilter from './StartDateFilter.vue';
import EndDateFilter from './EndDateFilter.vue';
export default {
components: {
StartDateFilter,
EndDateFilter
}
}
</script>
<script>
export default {
created() {
console.log('made it first');
}
}
</script>
<script>
export default {
created() {
console.log('made it second');
}
}
</script>
导出默认值{
创建(){
log('makeitfirst');
}
}
EndDateFilter组件
<template>
<div>
<start-date-filter />
<end-date-filter />
</div>
</template>
<script>
import StartDateFilter from './StartDateFilter.vue';
import EndDateFilter from './EndDateFilter.vue';
export default {
components: {
StartDateFilter,
EndDateFilter
}
}
</script>
<script>
export default {
created() {
console.log('made it first');
}
}
</script>
<script>
export default {
created() {
console.log('made it second');
}
}
</script>
导出默认值{
创建(){
log('makedthesecond');
}
}
我认为不能保证订购。这不是您真正应该依赖的东西,理想情况下,兄弟组件不应该直接相互对话,所以这不重要
通常,当Vue渲染时,它将尝试重用上一次渲染中的子组件。各种因素影响VNode匹配算法,以确定哪些旧节点与哪些新节点配对。已经存在的节点的任何组件都不会调用其钩子
考虑到没有现有组件的新渲染的简单情况
您可以通过使用debugger
语句而不仅仅是控制台日志记录来查看当前代码如何处理此问题。在调试器中暂停时,您可以查看调用堆栈以查看组件是如何创建的
目前,Vue似乎将按照子项在VNode的子项
数组中出现的顺序处理这些子项。方法createChild
只是循环通过它传递的子数组,该数组来自createElm
,它从vnode.children
获取
我认为这应该意味着为组件创建的钩子将按照它们在模板中出现的顺序被调用,只要不涉及任何插槽。在模板中出现的顺序至少定义了顺序。