Redux 树几乎是一个操作列表以及从这些操作派生的状态。
像这样的事情:
{ type: "INIT", number: 2 }
{ type: "ADD", addend: 4 }
{ type: "MULTIPLY", factor: 2 }
{ type: "SUBTRACT", subtrahend: 3 }
store.getState() // returns { number: 9 }
我正在摆弄的项目需要允许拼接一个新操作到该日志的中间。例如,在 MULTIPLY 之后、SUBTRACT 之前添加“除以四”。该操作需要插入历史记录中,然后重播任何后续操作。
这个“计算器”示例绝对经过简化,但希望您能明白其中的意思。
这是 Redux 的有效用例吗?是否有一个库或通用技术在设计时考虑到了这种类型的操作流程?
最佳答案
昨天看到你在 Reddit 上问了这个问题,并且I already answered it there ,但为了完整性,我将在此处包含答案:
是的,有几个现有的 Redux 插件库可用于处理撤消/重做类型的功能。请参阅Use Cases#Undo/Redo我的部分Redux addons catalog 。
虽然我自己没有使用过其中任何一个,但我怀疑与您的用例最相关的一个是 Microsoft 推出的一个名为 redux-dag-history 的库。 。不幸的是,该库似乎没有特别详细的文档,但作者确实写了 a blog post discussing the concepts behind the library .
您还可以查看 Redux DevTools store enhancer 的内部实现,它基本上完成此类工作,但实际上仅用于开发用途。您可以重用它,或修改它以更好地适合您的用例。
关于javascript - 将 redux 操作拼接到历史中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45571809/