gpt4 book ai didi

clojure - 使用 reagent 和 re-frame 时,如何在 crud 类型的应用程序中实现撤消和重做?

转载 作者:行者123 更新时间:2023-12-01 10:34:57 27 4
gpt4 key购买 nike

尽管在重构主页上它说“保存和撤消变得非常容易。”,重构示例应用程序“todomvc”没有实现撤消/重做功能的代码。

当使用像 Java 这样的 OO 语言时,通常的做法是通过对执行的操作使用命令接口(interface)来实现撤消/重做,将它们与它们的“逆”一起存储,并(重新)执行来自存储的命令对象集合的那些。

虽然我已经阅读了常见 OO 设计模式的 Clojure 等价物页面 including, Command here.在某些示例或应用程序中看到使用 reagent、re-frame 实现撤消/重做会很有帮助。

问。 如何在crud类型的应用程序中使用reagent和re-frame实现undo和redo?

最佳答案

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。

有关更多信息,请阅读 this filethis one .

关于clojure - 使用 reagent 和 re-frame 时,如何在 crud 类型的应用程序中实现撤消和重做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37325221/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com