Почему vue router перезагружает компонент, если этот компонент такой же, но целевой маршрут определен на другом дочернем уровне? - PullRequest
1 голос
/ 14 июня 2019

У многих возникает вопрос: как перезагрузить компонент, когда маршрут изменен, но компонент тот же?

У меня противоположная проблема. Компонент обновляется, когда маршрут «до» находится на другом дочернем уровне, чем маршрут «от».

Vue router 3.0.6.

Это для замены из маршрута BusinessCaseDetailInsert на маршрут BusinessCaseDetail:

this.$router.replace({ name: 'BusinessCaseDetail', params: { id: newData.BusinessCaseId } });

1) Компонент не обновляется, когда маршруты «до» и «из» находятся на одном уровне. Желательно.

var businessCaseDetailRoutes = [
    {
        path: 'business-case-detail-:id',
        name: 'BusinessCaseDetail',
        component: () => import('@/components/panels/businesscases/businesscase-detail'),
        props: (route) => getBusinessCaseDetailProps(route)
    },
    {
        path: 'business-case-insert',
        name: 'BusinessCaseDetailInsert',
        component: () => import('@/components/panels/businesscases/businesscase-detail')
    }
];

2) Обновление компонента происходит, когда маршруты «до» и «из» не находятся на одном уровне. Это не желательно. : - (

var businessCaseDetailRoutes = [
    {
        path: 'business-case-detail-:idbc',
        component: '<router-view></router-view>',
        children: [
            {
                path: '',
                name: 'BusinessCaseDetail',
                component: () => import('@/components/panels/businesscases/businesscase-detail'),
                props: (route) => getBusinessCaseDetailProps(route)
            },
            {
                ...
            }
        ]
    },
    {
        path: 'business-case-insert',
        name: 'BusinessCaseDetailInsert',
        component: () => import('@/components/panels/businesscases/businesscase-detail')
    }
];

Мне нужно избегать обновления компонента, когда целевой маршрут определен на разных дочерних уровнях.

...