【发布时间】:2018-12-10 23:07:43
【问题描述】:
我正在学习 Vue atm,但我无法通过 Vue 路由在子组件和父组件之间传递道具。我有一个 Layout 组件,它有一个包装器 DIV,如下所示:
<template>
<div class="container" v-bind:class="cssClass">
<router-view></router-view>
</div>
</template>
<script>
export default {
name: 'Layout',
props: ['cssClass']
}
</script>
我已经在我的基础 App JS 中定义了路由,如下所示。所以我对第一次加载的看法是“容器动画”类,世界上一切都很好。
const router = new VueRouter({
routes: [
{ path: '/', component: Layout, props: { cssClass: 'container-animated' },
children: [
{ path: '', component: Homepage },
{ path: '/hello-world', component: HelloWorldPage, props: { cssClass: '' } }
]
},
]
});
但是,一旦我点击 /hello-world 路线,我想将一个空的 cssClass 道具传递给 Layout,(HelloWorldPage 当前嵌套在其中) - 我该怎么做?道具甚至是实现这一目标的机制吗?
【问题讨论】:
-
为什么要传一个空的prop?这个道具将来应该改变吗?孩子应该用
cssClass做什么?父组件是否应该通知哪个组件处于活动状态并更改相应子组件的cssClass? -
好吧,在这种情况下,我想删除父级中的 css 修饰符。在另一条路线中,我可能想要添加不同的修饰符,具体取决于通往其他路线的路线。是的,您关于父母知道子组件道具的最后声明。
标签: javascript vue.js vuejs2 vue-router