import { remoteSettings } from 'somewhere';
const store = {
state: {
view: {
foo: true
}
},
mutations: {
toggleFoo(state) {
state.view.foo = !state.view.foo;
}
},
actions: {
async toggleFoo({ state, commit }) {
commit('toggleFoo');
await remoteSettings.save(state);
}
}
};
私はこれのようなシンプルな店を持っていると言います。 toggleFoo
アクションは突然変異を適用し、非同期呼び出しを行うことによって新しい状態を保存します。ただし、remoteSettings.save()
呼び出しが失敗した場合、ストア内のローカル設定とリモート設定が同期していません。このアクションで本当に達成したいことは、次のようなものです:vuexの "Simulate"変異
async toggleFoo({ state, commit }) {
const newState = simulateCommit('toggleFoo');
await remoteSettings.save(newState);
commit('toggleFoo');
}
私は実際にそれをコミットせずに新しい状態を取得したいと思います。リモート呼び出しが成功すると、実際にストアを更新します。もしそうでなければ、それはそのままの状態にとどまるでしょう。
これを達成する最も良い方法は何ですか(実際には突然変異関数のロジックを複製する必要はありません)。 「元に戻す」とか?よく分かりません。これを行うための
ありがとうございます。私は今のところこのようなものを持っています。これは、変更を適用してからそれらを元に戻すのではなく、うまくいくように見えます。 vuexでこのような場合に推奨される方法/ベストプラクティス/省略表現があるかどうかは疑いがありませんでした。 – mkubilayk