Vuexを使用して元に戻す/やり直す方法を教えてください。私は非常に複雑なアプリケーションに取り組んでおり、Vue開発ツールは私の状態を切り替えるのに多くの助けをしたので、私のアプリにその機能が必要です。どうすればこれを達成できますか?Vue.jsの元に戻すやり直しのような状態に戻る
0
A
答えて
4
私は次のように元に戻すには、やり直し実装しました:
1)vuex
const undoRedoPlugin = (store) => {
// initialize and save the starting stage
undoRedoHistory.init(store);
let firstState = cloneDeep(store.state);
undoRedoHistory.addState(firstState);
store.subscribe((mutation, state) => {
// is called AFTER every mutation
undoRedoHistory.addState(cloneDeep(state));
});
}
2)を使用しているプラグイン
new Vuex.Store({
...
plugins: [undoRedoPlugin]
});
3)の歴史を保存するためのプラグインを作成しますundoRedoHistory内の州
class UndoRedoHistory {
store;
history = [];
currentIndex = -1;
init(store) {
this.store = store;
}
addState(state) {
// may be we have to remove redo steps
if (this.currentIndex + 1 < this.history.length) {
this.history.splice(this.currentIndex + 1);
}
this.history.push(state);
this.currentIndex++;
}
undo() {
const prevState = this.history[this.currentIndex - 1];
// take a copy of the history state
// because it would be changed during store mutations
// what would corrupt the undo-redo-history
// (same on redo)
this.store.replaceState(cloneDeep(prevState));
this.currentIndex--;
}
redo() {
const nextState = this.history[this.currentIndex + 1];
this.store.replaceState(cloneDeep(nextState));
this.currentIndex++;
}
}
const undoRedoHistory = new UndoRedoHistory();
4)は、それが
undoRedoHistory.undo();
...
undoRedoHistory.redo();
あなたの状態は良い方法であると述べ、クローニングよりもサイズが巨大でない場合は使用しています。
5
参照:https://vuex.vuejs.org/en/api.html
あなたは、配列内の指定されたStoreからあなたが望むすべての状態を保つ機能を登録するために使用subscribe(handler: Function)
をeaselyすることができます。
次に、replaceState(state: Object)
の引数として指定して、その配列に保存された状態のいずれかを使用できます。
関連する問題
- 1. イベントバインディングを元に戻す/やり直す
- 2. .animate()と元の状態に戻る
- 3. iphone - アニメーションが元の状態に戻る
- 4. 状態を元の値に戻す
- 5. アンドロイドアニメーションを元の状態に戻す
- 6. プロトタイプを元の状態に戻す
- 7. VIM、元に戻す/やり直しの履歴を破るSnipMate
- 8. Textmateで元に戻す/やり直しをスピードアップするには?
- 9. スイングでのアクションのやり直し/元に戻すオプション
- 10. Javaの元に戻すアクションとやり直しのイベント
- 11. スタンドアロンのAptana Sudio 3でやり直しを元に戻す
- 12. Androidのビットマップ元に戻すやり直し効果
- 13. Visual C++の元に戻す操作とやり直し操作
- 14. リンクリストでの元に戻す/やり直し
- 15. 元に戻すとやり直しの機能が壊れた
- 16. テキストボックスのリセット元に戻す/やり直し
- 17. Neo4jの元に戻す/やり直す/ロールバックする方法は?
- 18. 最後のローカルコミットを元に戻し、リモート状態に戻すには?
- 19. Eclipse E4でやり直しを元に戻す
- 20. ジェスチャー処理を元に戻してやり直す方法
- 21. 簡単な元に戻す/やり直しに関するガイドが必要
- 22. 前の状態に戻る
- 23. VisualStateManagerは元の状態に戻りません
- 24. Visual Studio拡張機能のログを元に戻す/やり直しを行う
- 25. CGAffineTransformRotateは、繰り返しクリックすると元の状態に戻りません。
- 26. QPlainTextEditで元に戻す/やり直す方法
- 27. css3アニメーションを元の状態に戻し続ける
- 28. clojureでの元に戻す/やり直しを実装するためのパターン
- 29. シングルページアプリケーションのテキストエディタのCtrl + Z(元に戻す/やり直し)を処理する
- 30. gitブランチを作成し、元の状態に戻す