为什么我的vue嵌套组件代码中父组件渲染了两次?

发布于 2022-09-13 01:23:08 字数 2249 浏览 10 评论 0

在看vue的嵌套组件,试着写了一下,渲染效果是这个样子,父组件的router-link部分渲染了两个,不明白是为什么?求解答。
image.png
代码如下

// 父组件 src/components/Super.vue
<template>
    <div style="margin-left: 300px;">
        <router-link :to="{name: 'a'}" exact><button type="button">点击显示组件A</button></router-link>
        <router-link :to="{name: 'b'}" exact><button type="button">点击显示组件B</button></router-link>
        <router-view></router-view>
    </div>
</template>

<script>
    export default {
        name: 'Super'
    }
</script>

<style>
</style>
// src/components/A.vue
<template>
  <h1>This is A</h1>
</template>

<script>
  export default {
    name: "A"
  }
</script>

<style>
</style>
<template>
  <h1>This is B</h1>
</template>

<script>
  export default {
    name: "B"
  }
</script>

<style>
</style>
// src/router/index.js
import Vue from 'vue';
import Router from 'vue-router';

Vue.use(Router);

export default new Router({
    // 设置激活状态下的样式名
    linkActiveClass: 'active',
    // mode: "history",
    routes: [
        {
            path: '/super/',
            name: 'super',
            component: () => import("../components/Super.vue"),
            children: [
                {
                    path: 'a/',
                    name: 'a',
                    component: () => import("../components/A.vue")
                },
                {
                    path: 'b/',
                    name: 'b',
                    component: () => import("../components/B.vue")
                }
            ]
        }
    ]
});
// src/App.vue
<template>
    <div id="app">
        <Super></Super>
    </div>
</template>

<script>
    import Super from './components/Super.vue'

    export default {
        name: 'App',
        components: {
            Super
        }
    }
</script>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

暮色兮凉城 2022-09-20 01:23:08

你的Super组件都在路由中声明了,再在App中引入,不是成了自己嵌套自己?

路由的嵌套就是router-link的嵌套,把App改成

<div id="app">
    <router-view></router-view>
</div>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文