vue 路由的一个问题

const user = {
    template:"<div>我是默认的</div>"
}
const userA = {
    template:"<div>我是A</div>"
}
const userB = {
    template:"<div>我是B</div>"
}
const router = new VueRouter({
    routes: [
        {
            path: "/user/",
            components: {
                default: user,
                A: userA,
                B: userB
            }
        }
    ]
});
new Vue({
    router,
    methods: {
        A()
        {
            this.$router.push({ path: "user" });
        }
    }
}).$mount("#app");
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body>
    <script src="https://unpkg.com/vue/dist/vue.js"></script>
    <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>

    <div id="app">
        <div @click="A">默认</div>
        <div @click="A">A</div>
        <div @click="A">B</div>
        <router-view></router-view>
        <router-view name="A"></router-view>
        <router-view name="B"></router-view>
    </div>
    <script src="JavaScript3.js"></script>
</body>
</html>

有一个问题,为什么浏览器不需要触发点击事件就会全部渲染呢?
图片.png

阅读 1.7k
2 个回答

因为 router-view 标签可以直接映射出相关的路由组件,想通过点击事件控制的话,可以加一个变量,在 router-view 标签上加 v-if 判断是否显示

<router-view></router-view>

这个东西是容器,router 切换的时候内容会渲染到这里。
你搞了三个容器出来,还需要什么点击啊。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题