關於使用vue-router的嵌套路由的命名路由時踩的坑


今天在做我的模仿微博項目時,我想實現點擊router-link后,跳轉到微博正文頁面,並渲染其嵌套視圖-評論組件。但是在實際實現時,我發現頁面可以正常跳轉,但是在頁面加載后,並不渲染該頁面的嵌套視圖,但是在點擊該嵌套視圖所對應的嵌套路由后,該嵌套視圖會進行渲染。並且,我的另一個頁面的嵌套視圖可以正確的進行初始渲染。仔細的查看后,我懷疑問題在於命名路由,可以正常渲染的視圖未使用命名路由,不能正常使用的路由使用了命名路由。

故刪除命名路由的name並修改其對應路由的to屬性,從:to="{name: ..., params: {...}}"修改成:to="`/.../${...}`"

以下放代碼

原代碼

routes.js
const routes = [
    {...},
    {
        path: '/weibo/:weiboId', 
        component: vWeibo, 
        name: 'weibo',
        children: [
            {path: '', component: ...},
            ...
        ]
    },
    ...
];
...

home.vue
...
<router-link
    ...
    :to="{name: 'weibo', params: {weiboId: ...}}"
>
...

weibo.vue
...
<router-link
    ...
    :to="{path: `/weibo/${$route.params.weiboId}`}"
    replace
>
...
<router-view></router-view>
...

修改后代碼

routes.js
const routes = [
    {...},
    {
        path: '/weibo/:weiboId', 
        component: vWeibo, 
        children: [
            {path: '', component: ...},
            ...
        ]
    },
    ...
];
...

home.vue
...
<router-link ... :to="`weibo/${weibo.weiboId}`" > ... weibo.vue ... <router-link ... :to="{path: `/weibo/${$route.params.weiboId}`}" replace > ... <router-view></router-view> ...

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM