vue.js - 为什么组件显示两次?
问题描述
我正在学习 vue + vuex + vue-router。我有一个问题,当然是基本的。
我有这个应用程序:
<template>
<div id="app">
<div id="nav">
<home v-if="isLogged"></home>
<login v-else></login>
</div>
</div>
</template>
机制还可以。如果我已连接,则显示组件“home”,否则显示组件“login”。完美的。
组件“家”是:
<template>
<div class="home">
<img alt="Vue logo" src="../assets/logo.png">
HOME PAGE AVEC LES MENUS A FAIRE
<router-link to="/user" v-if="isLogged">User</router-link>
<router-link to="/about" v-if="isLogged">About</router-link>
<button type="button" @click="logout()" v-if="isLogged">Logout</button>
<router-view />
</div>
</template>
路由器是:
Vue.use(VueRouter)
const routes = [
{
path: '/',
name: 'Home',
component: Home,
meta: {
auth: true
}
},
{
path: '/about',
name: 'About',
meta: {
auth: true
},
component: () => import( /* webpackChunkName: "about" */ '../views/About.vue')
},
{
path: '/user',
name: 'User',
meta: {
auth: true
},
component: () => import( /* webpackChunkName: "about" */ '../views/User.vue')
},
{
path: '/login',
name: 'Login',
component: () => import( /* webpackChunkName: "login" */ '../views/Login.vue')
},
{
path: '*',
component: () => import('../views/errors/NotFound.vue')
}
]
我为“/”路线获得了这个:
这对于“关于”路线:
如您所见,组件“home”显示了两次。我不明白为什么。
解决方案
- 将主路由视图从 Home 组件移动到 App.vue。
- 从 App.vue 中删除 Home 组件,并将页眉和页脚等现代内容添加到 App.vue,因为它们将成为您的应用程序的布局。组件显示两次的原因是在另一个相同组件附近创建了一个 Home 组件,因为它已经在布局中。你的 App.vue 应该看起来像这样:
<template>
<div id="app">
<div id="nav">
<AppHeader/>
<router-view/>
<AppFooter/>
</div>
</div>
</template>
和 Home.vue:
<template>
<div class="container">
<div class="main_content" v-if="isAuthenticated">
<!-- Here goes you Home page -->
</div>
<login v-else></login>
</div>
</template>
在您的 router.js 中,只需导入 Home.vue 并添加新路由:
import Home from 'path/to/home.vue'
const routes = [
{
path: '/',
name: 'home',
component: Home
}
// ... other routes
]
推荐阅读
- r - for 循环在 r 列表中的所有数据帧中进行方差分析
- php - 无法更新数据,因为调用未定义的方法 Illuminate\Database\Query\Builder::save()
- java - 如何在java中发送'SIP请求'(SIP客户端)
- java - 如何使用 Graphics2d.setPaint() 在 Java 中快速绘制大型数据集
- python - 使用 pip 安装“SSLError”
- javascript - 当滚动出这个元素时,我必须改变什么才能在 div 和 fadOut 上进行淡入淡出?
- python - 几何中位数
- python - 列表理解 - 默认第一个值
- javascript - 在Javascript中按Id过滤json对象
- angular - 如何编写单元测试来捕获异常在函数中的异步块(可观察或承诺)中抛出的异常?