Vue3中使用子组件,子组件有onMounted的话,在父组件一加载,子组件的onMounted就会执行打印,如何当子组件打开的时候,再执行子组件的onMounted
时间: 2024-09-19 19:01:43 浏览: 29
在Vue3中,如果你想让子组件的`onMounted`生命周期钩子只在子组件被首次激活或显示时执行,而不是在父组件加载时就执行,你可以利用`v-if`或`v-show`指令来控制子组件的渲染。当你需要展示子组件时,将它们包裹在一个条件渲染的元素内。
例如:
```html
<template>
<div>
<button @click="showChild = true">点击显示子组件</button>
<div v-if="showChild">
<child-component :key="childKey"></child-component>
</div>
</div>
</template>
<script>
export default {
data() {
return {
showChild: false,
childKey: ''
};
},
components: {
ChildComponent: { /* 子组件配置 */ }
},
methods: {
// 当需要更新子组件时,手动触发更新
updateChildComponent() {
this.childKey++;
this.$forceUpdate();
}
},
mounted() {
// 在父组件初始化时,不需要调用子组件的onMounted
}
};
</script>
```
在这个例子中,点击按钮后才会执行`showChild`到`true`,这会触发子组件的渲染,同时由于`:key`的变化,Vue会认为这是对子组件的更新操作,不会执行新的`mounted`。如果需要在子组件内部完成某些设置后再执行`onMounted`中的逻辑,可以在`updateChildComponent`方法里添加相应的代码。
阅读全文