Ну так в этом и смысл подгрузки компонентов асинхронно, родитель не будет ждать пока загрузится дочерний асинхронный компонент и вызовет
mounted. Вижу несколько вариантов.
1. Грузить компонент синхронно.
2. Использовать
$emitChild.vue<template>
<p>Child component</p>
</template>
<script>
export default {
mounted() {
//имитируем задержку
setTimeout(() => {
this.$emit('load');
}, 2000);
}
}
</script>
Parent.vue<template>
<h1>Parent component</h1>
<child @load="onLoad"></child>
</template>
<script>
export default {
components: {
child: () => import('child.vue'),
},
methods: {
onLoad() {
console.log('Child loaded!');
}
}
}
</script>