前提・実現したいこと
子のコンポーネントにストア情報をprops
で渡して、指定されたストアの場所へデータを保存したいです。
現状は、ストアの数だけ(保存先の数だけ)子のコンポーネントがあり、これを解消したいです。
https://user-first.ikyu.co.jp/entry/design-of-vue-and-vuex
こちらのサイトを参考に色々作成していたのですが、
ページ下部にあるVuexのバッドプラクティス
という項目をみて、これをやろうと考えました。
発生している問題・エラーメッセージ
そもそも、どういう構造にしていいのかがわかりませんでした。
というのが、既存のコードではmapGetters
や`mapActionsPで呼び出しを行なっているのですが、
これを、親からもらったストア情報から呼び出すという構造がどうやったら実現できるのかがわかりませんでした。
既存の子コンポーネントコード
vue
1<template> 2 <div> 3 <input vmodel="text"> 4 </div> 5</template> 6 7<script> 8import { mapGetters, mapActions } from "vuex" 9 10export default { 11 name: 'Child', 12 data: () => { 13 return { 14 text: "", 15 } 16 }, 17 computed: { 18 ...mapGetters('storeA', [ 19 'getItemData', 20 ]), 21 }, 22 watch: { 23 state: function(nv, ov) { 24 let param = { 25 text: this.text 26 } 27 this.setItemByID(param) 28 } 29 }, 30 methods: { 31 ...mapActions('storeA', [ 32 'setItemByID', 33 ]), 34 }, 35} 36</script> 37
親のコンポーネント
vue
1<template> 2 <div> 3 <Child /> 4 <Child /> 5 <Child /> 6 </div> 7</template> 8<script> 9export default { 10 ...vueの諸々の処理 省略 11} 12</script>
ストアのディレクトリ構造
Javascript
1import Vue from 'vue' 2import Vuex from 'vuex' 3import storeA from './storeA' 4import storeB from './storeB' 5import storeC from './storeC' 6 7Vue.use(Vuex) 8export default new Vuex.Store({ 9 state: {}, 10 mutations: { 11 }, 12 actions: { 13 }, 14 modules: { 15 storeA: storeA, 16 storeB: storeB, 17 storeC: storeC, 18 }, 19})
上記のコードで、
子コンポーネントで行なっているmaoGettes
やmapActions
は、
現在はstoreA
の固定になっていますが、
storeA, storeB, storeC
のように、親のコンポーネントの方で
propsで渡せればと考えているのですが、
<Child :storeData="$store.storeA">
みたいなことをするのかなとは思うのですが、
受け取ったあと、mapGetters
をするのか?
と思い色々やってみたのですがわかりませんでした。
わかる方教えていただければ幸いです。
よろしくお願いいたします、
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/13 00:58 編集