url 中未显示组件名称
component name not showing up in url
我目前正在构建一个 vue/node 应用程序。在我的 Login.vue 页面中,我使用 router.push 在身份验证完成后转到主页。
示范:
router.push({name: 'home', params: {data: this.var}});
但是,当我这样做时,它工作正常并且功能在那里。但是,url 显示 http://localhost:6969:/
而不是 http://localhost:6969:/home
。
我该怎么做?
这是我的路由器:
import Vue from "vue";
import Router from "vue-router";
Vue.use(Router);
export default new Router({
mode: "history",
routes: [
{
path: "/login",
name: "login",
component: () => import("./components/Login")
},
{
path: "/home/:data",
name: "home",
component: () => import("./components/Home")
}
]
});
我创建了一个基本的示例应用程序并且能够复制您所看到的行为。
当我传入route params的变量存在时,地址栏显示路径,但当我传入route params的变量为'undefined'时,导航仍然改变,但地址栏显示不显示路径。
不确定这是否是导致您出现问题的原因,但我建议确认您的“{ data: this.var }”值是否已定义。
这是我的代码。
路由器:
注意:通常我会在我的路线对象中包含 'props: true',但为了匹配您的示例而将其保留。
import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)
import Home from '@/components/Whosebug/router-props/Home'
import RouterProps from '@/components/Whosebug/router-props/RouterProps'
const routes = [
{
path: '/',
name: 'home',
component: Home,
},
{
path: '/routerprops/:id',
name: 'routerProps',
component: RouterProps,
// props: true
}
]
export default new VueRouter({
mode: 'history',
base: process.env.BASE_URL,
routes
})
Home.vue(不是我测试中带参数的路由):
注意:请参阅方法 'goRouterProps' 了解两种情况。
<template>
<div class="home">
<h3>Home.vue</h3>
<div class="row">
<div class="col-md-3">
<router-link class="btn btn-primary" :to="{ name: 'routerProps', params: { id: this.id }}">RouterProps via link</router-link>
</div>
<div class="col-md-3">
<button class="btn btn-primary" type="button" @click="goRouterProps">RouteProps via push</button>
</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
id: 1
}
},
methods: {
goRouterProps() {
this.$router.push({ name: 'routerProps', params: { id: undefined }})
//this.$router.push({ name: 'routerProps', params: { id: this.id }})
}
}
}
</script>
和 RouterProps.vue,导航到:
<template>
<div class="router-props">
<h3>RouterProps.vue</h3>
<div class="row">
<div class="col-md-6">
<router-link class="btn btn-primary" :to="{ name: 'home'}">Home</router-link>
</div>
</div>
</div>
</template>
<script>
export default {
// props: {
// id: {
// type: Number,
// required: true
// }
// }
}
</script>
我目前正在构建一个 vue/node 应用程序。在我的 Login.vue 页面中,我使用 router.push 在身份验证完成后转到主页。
示范:
router.push({name: 'home', params: {data: this.var}});
但是,当我这样做时,它工作正常并且功能在那里。但是,url 显示 http://localhost:6969:/
而不是 http://localhost:6969:/home
。
我该怎么做?
这是我的路由器:
import Vue from "vue";
import Router from "vue-router";
Vue.use(Router);
export default new Router({
mode: "history",
routes: [
{
path: "/login",
name: "login",
component: () => import("./components/Login")
},
{
path: "/home/:data",
name: "home",
component: () => import("./components/Home")
}
]
});
我创建了一个基本的示例应用程序并且能够复制您所看到的行为。
当我传入route params的变量存在时,地址栏显示路径,但当我传入route params的变量为'undefined'时,导航仍然改变,但地址栏显示不显示路径。
不确定这是否是导致您出现问题的原因,但我建议确认您的“{ data: this.var }”值是否已定义。
这是我的代码。
路由器: 注意:通常我会在我的路线对象中包含 'props: true',但为了匹配您的示例而将其保留。
import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)
import Home from '@/components/Whosebug/router-props/Home'
import RouterProps from '@/components/Whosebug/router-props/RouterProps'
const routes = [
{
path: '/',
name: 'home',
component: Home,
},
{
path: '/routerprops/:id',
name: 'routerProps',
component: RouterProps,
// props: true
}
]
export default new VueRouter({
mode: 'history',
base: process.env.BASE_URL,
routes
})
Home.vue(不是我测试中带参数的路由):
注意:请参阅方法 'goRouterProps' 了解两种情况。
<template>
<div class="home">
<h3>Home.vue</h3>
<div class="row">
<div class="col-md-3">
<router-link class="btn btn-primary" :to="{ name: 'routerProps', params: { id: this.id }}">RouterProps via link</router-link>
</div>
<div class="col-md-3">
<button class="btn btn-primary" type="button" @click="goRouterProps">RouteProps via push</button>
</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
id: 1
}
},
methods: {
goRouterProps() {
this.$router.push({ name: 'routerProps', params: { id: undefined }})
//this.$router.push({ name: 'routerProps', params: { id: this.id }})
}
}
}
</script>
和 RouterProps.vue,导航到:
<template>
<div class="router-props">
<h3>RouterProps.vue</h3>
<div class="row">
<div class="col-md-6">
<router-link class="btn btn-primary" :to="{ name: 'home'}">Home</router-link>
</div>
</div>
</div>
</template>
<script>
export default {
// props: {
// id: {
// type: Number,
// required: true
// }
// }
}
</script>