Лучше никак.
Так что сперва о том, как надо. Вместо вкладок
используем меню - оно умеет работать с роутером:
<el-menu mode="horizontal" router :default-active="$route.name">
<el-menu-item
v-for="n in $router.getRoutes()"
v-text="n.name"
:index="n.name"
:route="n"
/>
</el-menu>
<router-view />
Ну а вкладки... Делаем вычисляемое свойство, представляющее активный маршрут, геттер - возвращает имя, сеттер - по имени выполняет переход:
computed: {
activeRouteName: {
get() {
return this.$route.name;
},
set(name) {
this.$router.push({ name });
},
},
},
Используем это свойство для управления вкладками. Контент у всех вкладок одинаковый -
<router-view>
, но рендерить будем его только в активной вкладке.
Вот такой получается говнокод:
<el-tabs v-model="activeRouteName">
<el-tab-pane v-for="{ name: n } in $router.getRoutes()" :label="n" :name="n">
<router-view v-if="activeRouteName === n" />
</el-tab-pane>
</el-tabs>