ディスパッチ/アクションがその中にゲッターを呼び出す方法はありますか?
mutations: {
setData(state, data) {
state.data = data;
}
}
actions: {
sendDataToServer({ commit }, payload) {
// call getter (data) and assign to variable
// do async functions from the data returned
}
},
getters: {
getAppData: state => () => {
return state.data;
}
}
それでは、ここでのベストプラクティスは何ですか?ミューテーションを使用して状態を変更し、状態を取得してアクションに渡すと、非同期関数が実行されますか、実装を再構築する必要がありますか?
突然変異を呼び出す-> getterを介してデータを取得する->アクションを呼び出す
OR
すべてをアクションで実行します(アクションを変更し、ゲッターを必要とせずにアクション/非同期メソッドを実行します)?
アクションでは、最初のパラメーターに{commit}
が含まれています。同様に、{commit, state}
を渡すことができます。これにより、state.dataに直接アクセスできます。
あなたの例では、commit('setData')
を使用して内部アクション自体からミューテーションを呼び出すことができるため、アクションを実行したいと思います。
最初のパラメーターは、必要に応じて状態と突然変異を使用するためのものです。個人的に、私はあなたが最初にアクションを実行し、それをアプリに保存するためにミューテーションを行うプロジェクトに取り組んできました。たとえば、車の情報をサーバーのどこかに保存する場合は、最初にアクションを実行します(そして、リモートデータベースに保存します)。データベースに保存されたことを確認したら、ストアでローカルに変更します。これは完全にケースバイケースに依存します。しかし、良いことは、アクションの内側から変異できることです
コミットに加えて、アクションにはdispatch
、getters
、およびrootGetters
というデフォルトの注入パラメーターがあります。だから、あなたは簡単に書くことができます。
sendDataToServer({ commit, getters }, payload)
はゲッターにアクセスします。