2017-04-19 12 views
0

私はいくつかのモジュールを持っていますvuex。簡単にするために、私は私が直面しています何の例と私の問題を説明します:異なるモジュールの突然変異のrootStateにアクセス

私は2 vuexモジュールfirstModule.jsを持ってsecondModule.js

firstModule.jsmyArray[ ]を持っていますその状態で:secondModule.js

//firstModule 

const state = { 
    myArray: [//has some items] 
} 

私はエクステルから非同期いくつかのデータをフェッチする作用を有しますAPI。

このアクションは、その後secondModuleのnewArray[ ]に追加し、フェッチされたデータは、firstModuleのmyArray[ ]に存在する場合、フェッチされたデータは、firstModuleのmyArray[ ]

  • に存在しているかどうかを検索する変異をコミット

    const state = { 
        newArray: [] 
    } 
    
    const mutations = { 
        addToNewArray: (state, payload) => { 
         function findIyem(value){ 
          return value === payload.data; 
         };  
    
         var item = payload.rootData.myArray.find(findItem); 
         state.newArray.push(payload.data); 
        } 
    } 
    
    const actions = { 
        fetchData: ({commit, rootState}) => { 
         // fetches some data from external API 
         var fetched data = data // data is which I received from fetching 
    
         commit('addToAnotherArray', {data: data, rootData: rootState.firstModule.myArray} 
        } 
    } 
    

しかし、ここで問題です:

  • モジュールでdocs変異に応じrootStateへのアクセスを得ることはありません、アクションのみとゲッターがへのアクセスを取得rootState

  • なし突然変異のrootAtateへのアクセス、私は上記のようにロジックを実行することができますか?

  • アクションでrootStateにアクセスし、上で行ったようにコミットされた突然変異をコミット突然変異に渡す必要がありますか?

答えて

0

私の経験では、vuexモジュールの突然変異は、モデルの記述方法に直接影響するはずです。したがって、addToNewArrayメソッドは、ペイロードデータを状態のnewArrayプロパティに単に追加する必要があります。

アクションは、ロジックコードを実行して変異を作成するかどうかを決定する場所です。あなたは、あなたのfirstModuleのmyArrayfetchDataのアクション内でチェックを行うことができます。それがベストプラクティスです。

しかし、本当に突然変異の変数rootStateにアクセスする必要がある場合は、現在のように変数参照として渡す必要があります。

関連する問題