关于 undo、redo 的实现
在我开发场景编辑器相关项目的时候,遇到过一个需求,是要实现 undo、redo 功能,比如说:用户把模型调大了一倍,然后他觉得不好想回退,那么执行 undo 后模型就会缩小成原本的状态。
这个需求乍一看很简单,不就存个状态树吗?拿前一步、后一步的状态树去覆盖不就好了?但在实际的业务上会有不少坑。
所以下文会提出两种方案,并一一讨论他们的使用场景和优缺点。
储存状态树
首先是储存状态树的方案,优点就是简单粗暴,每次操作前把当前的状态树保存下来,在 undo、redo 的时候直接覆盖回去。
如果的你...
erio.hashnode.dev1 min read