在vue3的子组件中用onMounted时,被执行了很多次,执行的次数是子组件数量
vue3中的路由设置如下:
routers:[
{
path:"/a",
name:"a",
component:a.vue,
redirect: "/a/b",
children:[
{
path:"/a/b",
name:"b",
component:b.vue,
},
{
path:"/a/c",
name:"c",
component:c.vue,
},
{
path:"/a/d",
name:"d",
component:d.vue,
}
]
}
]
父组件a中的代码如下:
<template>
<div>
//左侧菜单栏
<div class="menu">
<div class="menu-item" @click="routeB">
<span>菜单B</span>
</div>
<div class="menu-item" @click="routeC">
<span>菜单C</span>
</div>
<div class="menu-item" @click="routeD">
<span>菜单D</span>
</div>
</div>
<div class="router-view-container">
//右侧显示子组件
<div class="router-view-content">
//根据菜单的点击选项显示的不同子组件
<router-view></router-view>
</div>
</div>
</div>
</template>
<script setup>
const routeB = () => {
$router.push({name: "b"})
}
const routeC = () => {
$router.push({name: "c"})
}
const routeD = () => {
$router.push({name: "d"})
}
</script>
子组件B中的代码为:
<template>
<div class="child-b">
</div>
</template>
<script setup>
import { onMounted } from 'vue'
onMounted(() => {
console.log("这是B组件")
})
</script>
当页面加载时,B组件或者C组件中的onMounted函数加载了很多次,经过测试,这个加载次数个跟A组件的子组件数量有关,这个例子中,A组件有B、C、D三个子组件,所以执行了三次