这个问题很老,所以我不确定在提出问题时是否存在Function 模式,但它只能用于传递正确的 props。它仅在路由更改时调用,但所有 Vue 反应性规则适用于您传递的任何内容,如果它已经是反应性数据。
// Router config:
components:
{
default: Component0,
named1: Component1
},
props:
{
default: (route) => {
// <router-view :prop1="$store.importantCollection"/>
return { prop1: store.importantCollection }
},
named1: function(route) {
// <router-view :anotherProp="$store.otherData"/>
return { anotherProp: store.otherData }
},
}
请注意,这仅适用于您的 prop 函数的范围,以便它可以看到您要传递的数据。该route
参数不提供对 Vue 实例、Vuex 或 VueRouter 的引用。此外,该named1
示例还演示了它this
也未绑定到任何实例。这似乎是设计使然,因此状态仅由 URL 定义。由于这些问题,最好使用在标记中接收正确道具并让路由器切换它们的命名视图。
// Router config:
components:
{
default: Component0,
named1: Component1
}
<!-- Markup -->
<router-view name="default" :prop1="$store.importantCollection"/>
<router-view name="named1" :anotherProp="$store.otherData"/>
使用这种方法,您的标记声明哪些视图是可能的并设置它们的意图,但路由器决定激活哪些视图。