javascript - 将 redux 操作拼接到历史中

标签 javascript redux time-travel

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/

相关文章:

azure - 有没有办法更改部署了基于 Linux 的容器的 Azure 应用服务的日期

postgresql - postgres 中的时间旅行 - 违反 PRIMARY KEY 约束

javascript - 解析通过 JavaScript 从 AJAX 请求获得的 JSON 响应

javascript - JSEncrypt 每次为相同的消息和公钥生成不同的输出

ios - ClockKit CLKComplicationDataSource 缺少向后事件

javascript - Dispatch(action) 更改商店状态但组件未更新

reactjs - 如何更新react-redux中的存储状态?

javascript - 数组随机返回的 Jasmine 测试

javascript - slider 需要多次单击才能滚动

javascript - 为什么我的 React 组件不渲染 HTML,但日志正确?