Redux树几乎是一系列动作和从这些动作中获得的状态 像这样:
{ type: "INIT", number: 2 }
{ type: "ADD", addend: 4 }
{ type: "MULTIPLY", factor: 2 }
{ type: "SUBTRACT", subtrahend: 3 }
store.getState() // returns { number: 9 }
我正在摆弄的项目需要允许拼接一个新动作进入该日志的中间。例如,添加" DIVIDE四个"在MULTIPLY之后和SUBTRACT之前。需要将该操作插入历史记录中,然后重播任何后续操作。
这个"计算器"例子是肯定简化,但希望你能得到这个想法。
这是Redux的有效用例吗?是否有一个图书馆或常见的技术设计与这种类型的行动流程?
答案 0 :(得分:1)
看到你昨天在Reddit和I already answered it there上问了这个问题,但为了完整起见,我会在这里提供答案:
是的,有几个现有的Redux插件库用于处理撤消/重做类型功能。请参阅Use Cases#Undo/Redo的Redux addons catalog部分。
虽然我自己没有使用过任何一个,但我怀疑与你的用例最相关的那个是微软推出的名为redux-dag-history的库。不幸的是,lib似乎没有特别好记录,但作者确实写了a blog post discussing the concepts behind the library。
您还可以查看Redux DevTools store enhancer的内部实现,它基本上完成了这类工作,但实际上仅用于开发用途。您可以重用它,或者修改它以更好地适合您的用例。