我正在构建一个应用程序,在用户向下滚动时执行操作.如果我可以在用户再次向上滚动时撤消这些操作,那将是很好的,基本上将滚动转换为浏览动作时间线的方式.
Redux中是否有内置方式来执行此操作?或者我是否必须为此编写中间件?
Dan*_*mov 12
Redux中是否有内置方式来执行此操作?或者我是否必须为此编写中间件?
在这种情况下,中间件听起来像是错误的想法,因为这纯粹是国家管理的关注点.相反,你可以编写一个带有reducer并返回reducer的函数,在此过程中通过动作历史跟踪来"增强"它.
我在这个答案中概述了这种方法,它类似于redux-undo的工作原理,除了不存储状态,你可以存储动作.(取决于你想要做出的权衡,以及是否能够以不同于他们发生的顺序"取消"行动是很重要的.)
我相信这个想法与其说是“撤消”,不如说是每次动作通过 redux 时保存对整个状态树的引用。
您将拥有一个由不同时间的应用程序状态组成的历史堆栈。
let history = [state1, state2, state3]
// some action happens
let history = [state1, state2, state3, state4]
// some action happens
let history = [state1, state2, state3, state4, state5]
// undo an action
let history = [state1, state2, state3, state4]
state = state4
Run Code Online (Sandbox Code Playgroud)
要“撤消”操作,只需将应用程序状态替换为已保存的状态之一即可。
通过支持结构共享的数据结构可以提高效率,但在开发中我们实际上并不需要过多考虑资源限制。
| 归档时间: |
|
| 查看次数: |
5914 次 |
| 最近记录: |