3

リフレームのホームページには「保存と元に戻すのがとても簡単になりました」と書いてありますが、リフレームのサンプルアプリ「todomvc」には元に戻す/やり直し機能を実装するコードはありません。

Java のような OO 言語を使用する場合、実行されたアクションのコマンド インターフェイスを使用して元に戻す/やり直しを実装し、これらを「逆」で保存し、保存されたコマンド オブジェクトのコレクションからそれらを (再) 実行するのが一般的です。

一般的な OO デザイン パターンに相当する Clojure のページを読んだことがありますが、Command here. 元に戻す/やり直しを試薬で実装し、いくつかの例またはアプリケーションで再フレーム化することを確認すると役立ちます。

Q.試薬と再フレームを使用する場合、crud タイプのアプリケーションで元に戻すとやり直す方法を実装するには?

4

2 に答える 2

4

Re-frame には、実際にはundoableハンドラー用のミドルウェアが組み込まれています。残念ながら、(そうでなければ優れた)ドキュメントはそれをまったくカバーしていません。ソースコードを見て仕組みを理解しただけです。

使い方はとても簡単です:

(register-handler :your-handler
  ; this middleware from re-frame.core is all you need to enable undo
  (undoable "String that explains your action, optional")
  (fn [db [_]] ...))

それを行った後、アクションを元に戻したい場合は、単に(dispatch [:undo]). アクションを再適用するには、(dispatch [:redo]).

ミドルウェアは、変更されたバージョンの app-db を呼び出しごとに保存するだけで内部的に機能します。デフォルトの最大取り消し深度は 50 です。

詳細については、このファイルこのファイルをお読みください。

于 2016-05-19T23:46:48.333 に答える