vue.js - Vue路由器在具有不同组件的同一路径上路由
问题描述
我正在尝试在同一路径上的 vue 路由器中创建路由,但每个用户类型使用不同的组件。
基本上我有两种用户类型: - 公民 - 游客
我希望它们在进入根路径(“/”)时具有不同的组件。
有没有办法在我的路由器中有某种 if 语句?我不希望他们拥有类似于“/citizen/”或“/tourist”的路径。但是,组件(及其子组件)应该完全不同。
视图的文件夹结构如下所示:
- views
-- user
--- login
--- register
-- citizen
--- home
--- benefits
--- locations
-- tourist
--- home
--- accommodations
--- sightseeing
任何想法如何在 Vue 路由器中实现这一点?
解决方案
<component :is="componentName"></component>
. 只需使用计算属性根据用户类型显示适当的组件。让我们考虑home.vue
一下可以根据用户类型加载不同组件的位置。
home.vue
<template>
<component :is="appropriateComponent"></component>
</template>
<script>
import { mapGetters } from "vuex";
export default {
components: {
FirstComponent: () => import("/path/to/component/FirstComponent"),
SecondComponent: () => import("/path/to/component/SecondComponent")
},
computed: {
// I asume that you store your user in Vuex, so you can get user type through getter
// But you can get user type from anywhere
...mapGetters("user", ["userType"]),
appropriateComponent() {
return this.userType === "citizen" ? "FirstComponent" : "SecondComponent";
}
}
};
</script>
推荐阅读
- android - 如何获取 Android 10/11 设备的加入多播组列表?
- flutter - 在 FutureBuilder 的构建错误期间调用 setState() 或 markNeedsBuild()
- javascript - 为什么我的样式表没有包含在 Webpack 构建中?
- guix - GNU/GUIX 无法定位清单中指定的自定义模块
- file - Linux bash 查找和删除早于
- google-chrome - Chrome 在哪里获得此证书?
- javascript - 选择意见触发 onChange() 方法后,如何在页面上呈现特定对象道具
- python - 从 Huggingface 模型中提取中性情绪
- php - POST 请求调用 cURL 和另一个函数后如何设置表单值?全局变量不起作用
- linux - 如何在 Azure 门户中为 Azure Linux Functions 使用自定义映像?