【发布时间】:2020-02-05 21:09:37
【问题描述】:
我创建了一个带有基本路径的新 Vue 应用程序。由于该应用程序嵌入到另一个 Vue 应用程序中,因此该应用程序不会在启动时呈现 router-view。如果您想了解更多关于如何或为何将此应用嵌入到另一个应用中,请查看此处:
mount Vue apps into container of main Vue app
以及我自己对这个问题的回答:
https://stackoverflow.com/a/58265830/9945420
启动我的应用程序时,它会呈现除router-view 之外的所有内容。我想在启动时通过给定的浏览器 URL 重定向。这是我的路由器配置:
import Vue from 'vue';
import Router from 'vue-router';
import One from './views/One.vue';
import Two from './views/Two.vue';
Vue.use(Router);
const router = new Router({
base: '/my-embedded-app/',
mode: 'history',
routes: [
{
path: '/',
component: One,
},
{
path: '/two',
component: Two,
},
],
});
router.replace(router.currentRoute.fullPath);
export default router;
我希望应用在调用.../my-embedded-app/two 时呈现组件Two。不幸的是,router.replace 总是重定向到/(所以浏览器 URL 是.../my-embedded-app/)。我调试了router,发现路径是/,但我希望它是/two。
重要提示:
每当 url 为 / 时,我都不想将用户重定向到 /two。我只想在 url 为/two 时呈现视图Two。目前没有。
可能出了什么问题?也许我什至不需要那个重定向,并且可以用更优雅的方式解决问题。
【问题讨论】:
-
你的意思是,你想在你写的时候渲染组件一 - /my-embedded-app/one 作为 URL 和组件二 - /my-embedded-app/two?如果是,您是否尝试过 - { path: 'two', component: Two, } Removing '/' from '/two'
-
是的,完全正确。我尝试了你的方法,但后来我收到一条警告,这条路线必须使用前导斜杠。运行应用程序时,这条路线当时不起作用..
-
你能改变你的路线顺序吗?
标签: javascript vue.js vuejs2 vue-router