【发布时间】:2021-04-03 09:58:44
【问题描述】:
在使用 VueJS 时,如何在使用 vue-router 时将 prop 从 $root 视图实例传递给子组件?
$root 实例:
const router = new VueRouter({
routes: [{
path: "/dashboard",
component: () => import("./User/Dashboard.vue" /* webpackChunkName: "js/components/user/Dashboard" */ )
}]
});
var app = new Vue({
el: '#app',
router,
data: () => ({
passedProp
}),
});
Laravel 布局使用:
@section('content')
<transition name="slide">
<router-view></router-view>
</transition>
@endsection
vue-router 服务的子组件:
<script>
export default {
props: [
'clearFormProp'
]
}
</script>
查看vue-router documentation,有一种通过url传递prop的方法。然而,这使得道具无状态,并且不保留反应性。它只会在页面刷新时更新道具。
传递静态道具让我遇到同样的问题。
如何将道具传递给孩子,同时仍保留道具的反应性?
【问题讨论】:
-
你真的需要通过 url 使用 prop/传递给 vue-router 吗?我问这个是因为有一种方法可以将数据提取到 const(反应性)并在根和子组件中使用而不使用 prop
-
从技术上讲,我需要从父/$root vue 实例向 vue 路由器服务的子组件发出事件。传递响应式道具被用作桥接两个组件的标志,以便从 $root/parent 触发子级事件。只要我可以在两个组件之间保留某种反应性数据元素,就不需要通过路由器传递道具。
标签: javascript vue.js vuejs2 vue-component vue-router