Реальный вопрос в том, что происходит под капюшоном.
rout.js
var routes = [{
path: '/',
name: 'home', // missed this one
component: Home,
children: [
{
path: ':name',
name: 'theTask',
props: true,
component: TodoList
}
]
}]
родитель - Home
, а ребенок - TodoList
маршрут для родителя /
, а маршрут для ребенка /:name
.Вы пытаетесь изменить представление истинным.и это меняется.Но вы не можете видеть это.потому что в родительском компоненте компонента, который вы пытаетесь изменить, нет router-view
.
По умолчанию родительский элемент равен App.vue
для каждого объекта в массиве маршрутов (если вы не измените его иначе).Таким образом, Parent
компонента Home
является App.vue
.Но родительский элемент TodoList
является компонентом Home
.Я уверен, что у вашего Home.vue
нет <router-view>
.Когда вы пытаетесь отобразить компонент TodoList
, он отображает своего родителя, а затем находит <router-view>
в своем родительском элементе и пытается отобразить себя там.Но нет.И даже если вы добавите <router-view>
в Home.vue
, вы получите рендеринг Home
и TodoList
.
Я предполагаю, что вы пытаетесь сделать эторендер Home
и TodoList
рендер отдельно на App.vue
месте.Есть 2 варианта.
в routes.js
файле добавьте 2 пути, один для /
, а другой для /:name
var routes = [
{
path: '/',
name: 'home',
component: Home,
},
{
path: '/:name',
name: 'theTask',
props: true,
component: TodoList
}];
имеет базовый компонент (если он вам действительно нужен)) и добавьте 2 детей.
var routes = [{
path: '/',
component: Base,
children: [
{
path: '/',
name: 'home',
component: Home
},
{
path: ':name',
name: 'theTask',
props: true,
component: TodoList
}
]
}]
. Рассмотрите пример Evan You
здесь