私は_.vue
_コンポーネントに次のようにvuex名前空間付きゲッターマッピングを作成しました:
_...mapGetters([
'fooModule/barGetter'
])
_
.vueコンポーネントテンプレートでこのゲッターにアクセスするにはどうすればよいですか_{{fooModule.barGetter}}
_を試してみましたが、動作しないようです。_{{fooModule/barGetter}}
_は明らかに間違っています。
MapGettersでゲッターに別のキーを割り当てることができます
_...mapGetters({
fooBarGetter: 'fooModule/barGetter'
})
_
これにより、_{{forBarGetter}}
_を使用してテンプレートの値にアクセスできます
ただし、別のキーを割り当てずに_'fooModule/barGetter'
_にアクセスする方法があるかどうか疑問に思っています。出来ますか?もしそうなら?
mapGetters
の最初のパラメーターは名前空間にすることができます:
computed: {
...mapGetters("fooModule", [
"barGetter"
]),
...mapGetters("anotherModule", [
"someGetter"
])
}
これにより、テンプレートでthis.barGetter
または単にbarGetter
として値を使用できるようになります。注:複数のmapGetters
ステートメントを含めることは完全に許容されます。
まあ実際には'fooModule/barGetter'
というキーの下に登録されていますが、これはJavaScript変数の有効な名前ではありません。したがって、キーには文字列としてアクセスする必要があります。しかし、あなたはまだそれを行うことができます、{{ _self['fooModule/barGetter'] }}
を使用してテンプレートでそれにアクセスします。
この実用的な例を参照してください:
new Vue({
el: '#app',
store: new Vuex.Store({
modules: {
fooModule: {
namespaced: true,
state: {},
getters: {
barGetter() {
return 'Hi :)';
}
}
}
}
}),
computed: Vuex.mapGetters([
'fooModule/barGetter'
])
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.4.1/vue.min.js"></script>
<script src="https://unpkg.com/[email protected]"></script>
<div id="app">
{{ _self['fooModule/barGetter'] }}
</div>
名前空間を最初のパラメーターとして指定せずにこれを実現したい人のために、object/map
をmapGettersにすでに名前付きのゲッターの名前 sで渡す可能性もあります。
...mapGetters({
'activeItems': ACTIVE_ITEMS_GETTER_WITH_NAMESPACE
})
これは、ミューテーション、ゲッター、アクションの名前空間付きの名前を持つ定数がある場合に非常に役立ちます。私たちの場合、モジュールがたくさんあり、ゲッター、ミューテーション、アクションが含まれているモジュールを検索するのに時間がかかる場合があります。これが、定数に名前空間を追加する理由です。