项目优化之撤销功能的优化
本文写于2018/7/12
1、初始
在开发一个管理系统的时候,遇到了这样的一个需求,用户可以通过操作建立一颗组织机构树,在建立树的过程中可以对树进行新增节点、修改属性、删除节点以及撤销操作等功能。
对于其他功能的实现,就不再多做讲述了,这里主要介绍一下撤销功能,这个功能伪代码实现如下。
let tree = {
} // 组织机构树的数据结构
let history = []
function render (tree) {
// render tree
}
function pushHistory () {
history.push(JSON.parse(JSON.stringify(tree)))
}
/**
* action的装饰器
*/
function actionDecorator (actionFn) {
return function () {
let result = actionFn.call(this, ...arguments)
render(tree)
pushHistory()
}
}
function addAction (node) {