![](/img/trans.png)
[英]'Route with name 'something' does not exist' vue-router console.warn when using vue-test-utils
[英]vue-router Route with name does not exist
我有一個包含方法的vue
組件,該方法包含嘗試推送到另一個vue
組件的此路由器推送:
獲取動物.vue :
...
this.$router.push({
name: "/viewanimal",
});
...
我有這個路由器的映射:
路由器.js :
{
path: "/viewanimal",
component: () => import('./views/DisplayAnimal.vue')
},
{
path: "/getanimal",
component: () => import('./views/GetAnimal.vue')
}
但是,當GetAnimal.vue
中的代碼被執行時,我在控制台中得到了這個:
我被定向到http://localhost:8080/
。
我也試過
...
this.$router.push({
name: "viewanimal",
});
...
但它也不起作用。
編輯:
我試過了: router.js :
{
path: "/viewanimal",
name: "viewanimal",
component: () => import('./views/DisplayAnimal.vue')
},
{
path: "/getanimal",
name: "getanimal",
component: () => import('./views/GetAnimal.vue')
}
獲取動物.vue :
console.log("this.animal: " + JSON.stringify(this.animal)); //displays good JSON
this.$router.push({
name: "viewanimal",
params: this.animal
});
DisplayAnimal.vue :
created() {
console.log("animal param: " +
JSON.stringify(this.$route.params.animal)); //prints undefined
}
---animal參數好像沒有通過。 我不確定是路由器的路徑/名稱問題還是其他問題---。
更新:
設法使它工作。 這應該在GetAnimal.vue
中:
this.$router.push({
name: "viewanimal",
params: {
animal: this.animal
}
});
您必須在 router.js 文件中將路由定義為命名路由。 您的路線缺少name
屬性。 對於命名路由,name 屬性是必須的。 它應該像給定的例子,
const router = new VueRouter({
routes: [
{
path: "/viewanimal",
name: "animal",
component: () => import('./views/DisplayAnimal.vue')
},
{
path: "/getanimal",
name: "animal.get",
component: () => import('./views/GetAnimal.vue')
}
]
})
關注name
屬性,這是您可以在給定模板中使用的路由名稱,
<router-link :to="{ name: 'animal'}">Animals</router-link>
或者,這是推送新路線的代碼,
router.push({ name: 'animal'})
如果您不想 go 通過命名所有路由,您可以將路由路徑推送為router.push({ path: '/viewanimal' })
,但命名路由是更干凈的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.