首先,我已經檢查并打開了歷史模式,我vue-router像這樣呼叫:
const router = new Router({
mode: 'history',
base: process.env.BASE_URL,
routes: routes,
});
我當前的路線是/page/item/8,我正在重定向到/page/item/9。目前 url 發生了變化,但頁面不會重新呈現,讓我處于與以前相同的視圖中。
這種重定向是這樣完成的:
this.$router.push({ name: 'PageItem', params: { itemId: '9' }}).catch(err => {
// Stop Vue.router throwing an error if a user clicks on a notification with the same route.
if (err.name !== 'NavigationDuplicated') {
this.$logger.debug.log(err);
}
});
有問題的路線如下:
import PageWrapper from '@/layouts/PageWrapper';
export default [
{
path: '/page',
name: 'page',
component: PageWrapper,
children: [
... Other Routes ...
{
component: () => import(/* webpackChunkName: "page-item" */'@/pages/PageItem'),
name: 'PageItem',
path: '/item/:itemId/:view?',
},
],
},
];
任何想法,我已經調整了代碼以洗掉識別代碼,如果它看起來有點奇怪,請道歉。
uj5u.com熱心網友回復:
只有itemId路線引數在改變。在這種情況下,由于過渡前后使用了相同的路由組件,vue-router 將重用現有的路由組件;他們不會被摧毀和重建。因此,如果您在組件created或mounted鉤子中加載資料,則在路由更改后不會再次呼叫它們。相反,您需要使用 beforeRouteUpdate或觀察$route變化。
如果要強制部件將被破壞并重新創建(不推薦),那么你需要key的<router-view>路線上:
<router-view :key="$route.fullPath">
閱讀資料獲取指南了解更多資訊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/328307.html
