Я сделал нечто подобное с проектом, но вместо этого я использовал beforeRouteUpdate
Вот пример того, как это работает. На route.js просто определите свой динамический маршрут
const router = new Router({
linkActiveClass: 'active',
mode: 'history',
routes: [
{
path: '/:section',
component: Placeholder,
name: 'placeholder'
},
}
Затем в вашем компоненте (я полагаю, Placeholder.vue) в HTML добавьте эту строку кода
<transition name="fade" mode="out-in">
<component :is="section" key="section"></component>
</transition>
затем в вашем JS добавьте хук beforeRouteUpdate
и определите все ваши компоненты, которые будут соответствовать вашему параметру секции маршрута.
import he from './heOverview.vue'
import hi from './hiOverview.vue'
beforeRouteUpdate (to, from, next) {
// just use `this`
this.section = to.params.section
next()
},
components: {
he,
hi
},
data () {
return {
section: ''
}
}
Поэтому, когда пользователь перейдет на localhost/he
, будет загружен компонент heOverview.vue
. Единственное, что вам нужно убедиться, это то, что значение параметра section
должно соответствовать конкретному представлению, если не будет выдано сообщение об ошибке
Если вам нужна дополнительная информация о том, как это работает, прочитайте
https://vuejs.org/v2/guide/components-dynamic-async.html
https://router.vuejs.org/guide/advanced/navigation-guards.html#in-component-guards