Используйте одну и ту же страницу для нескольких маршрутов

Я пытаюсь выяснить, как использовать одну и ту же страницу для нескольких маршрутов в Nuxt.js с модулем i18n.

По сути, я хочу, чтобы этот маршрут: /product-category/:slug/in/:material использовал ту же страницу, что и /product-category/:slug

До сих пор я пробовал ниже, добавив его в nuxt.config.js - но это не работает. Он просто показывает _slug/_material/index.vue .

router: {
    extendRoutes (routes, resolve) {
        routes.push({
            path: '/product-category/:slug/in/:material',
            component: resolve(__dirname, 'pages/product-category/_slug/index.vue')
        })
    }
},

Возможно, потому что у меня есть модуль i18n, может быть, потому что я делаю что-то не так.

Это моя структура папок:

издание

Если я проверю свой файл router.js, я увижу путь, показанный дважды:

введите описание изображения здесь

Всего 1 ответ


Это был мой обходной путь, просто хотелось бы, чтобы был более простой метод. Плюс это все еще работает, если вы используете nuxt i18n.

nuxt.config.js

router: {
    extendRoutes (routes, resolve) {
        const routesToAdd = [
            { // add your routes here
                name: 'product-category-slug-material',
                path: '/product-category/:slug/in/:material',
                component: resolve(__dirname, 'pages/product-category/_slug/index.vue'), // which component should it resolve to?
                chunkName: 'pages/product-category/_slug/_material/index' // this part is important if you want i18n to work
            }
        ];

        const existingRoutesToRemove = routesToAdd.map(route => route.name);

        const generateRoutes = routes.filter((route) => {
            return !existingRoutesToRemove.includes(route.name);
        });

        routesToAdd.forEach(({ name, path, component, chunkName }) => {
            generateRoutes.push({
                name,
                path,
                component,
                chunkName
            });
        });

        routes.splice(0, routes.length, ...generateRoutes); // set new array
    }
},

Есть идеи?

10000