【发布时间】:2018-08-24 16:23:28
【问题描述】:
我想创建一个组件,我可以多次实例化指向不同的 vuex 命名空间(从中加载其数据)。该组件将从 Vuex 获取大部分数据。所以假设我有一个 Person 组件,我可以根据不同的路径实例化 Person 组件的许多副本到 vuex。
我想出如何做到这一点的最好方法是将 vuex 路径作为道具传递,但是我不知道如何使用 mapGetters 和朋友,因为他们在 .vue 时需要一个命名空间文件被实例化。
我希望能深入了解构建它的最佳“Vue 方式”。这是我目前想出的最接近的方法。
Person.vue:
<template>
<div>person {{name}} is {{age}} years old</div>
</template>
<script>
export default {
props: ['vuexNamespaceToLoadFrom'],
// FIXME: how do I do a mapGetters with a dynamic namespace that's
// set through props???
// I can't do the following since props aren't in scope yet :-(
...mapGetters(this.vuexNamespaceToLoadFrom, [ 'name', 'age'])
}
</script>
实例化几个从不同 vuex 命名空间加载其属性的 Person 多用途组件:
<Person vuex-namespace-to-load-from="api/jim">
<Person vuex-namespace-to-load-from="api/someotherpath/rachid">
<div>
<Person vuex-namespace-to-load-from="api/alternatepeople/grace">
</div>
【问题讨论】: