1.2.5 • Published 1 year ago

acttree v1.2.5

Weekly downloads
-
License
none
Repository
-
Last release
1 year ago

acttree

简要说明

acttree(操作树)是一个用于实现撤销重做功能的状态存储工具

特点

  • 基于操作记录: state(状态数据)只有一个,它只是把每一次执行的action(操作)记录起来,便于状态的还原与重现
  • 多支路重做: 大部分撤销重做工具的记录结构都是线性的,而它是树状的,能重现多个状态
  • 安全撤销: 可以选择手动编写每一种操作的撤销方式,也可以省略,交给代理去完成
  • 类型安全: 由typescript语言实现类型约束与推断

适用场景

具有MV架构的程序,如使用Vue搭建的应用

参考文档

工具函数

函数名描述参数
createStore创建一个状态存储实例options 配置对象
createModule创建一个模块parentModule 父模块,必须有父模块才能创建 name 模块名 options 配置对象

配置对象options

属性名说明示例
tierLimit可撤销层数限制,运行时超出会舍弃最旧结点,小于1则不生效-
parallLimit可重做的纵向层数,运行时超出会舍弃最旧子树,小于1则不生效-
state状态数据源,可以是一个对象,或返回数据源的函数,如果有参数,第一个参数是父模块的数据源{  state: {    table: 1, 2, 3  }}
getters视图集合,成员为返回部分数据的函数{  getters: {    table(state) {      return state.table    }  }}
actions操作集合,成员为必须含有do方法的对象,undo方法可选{  actions: {    add: {      do(state, item) {        state.table.push(item)      }    }  }}
modules模块集合,成员为子模块的配置对象{  modules: {    state: (state) => {      return state.table    },    actions: {      add: {        do(state, item) {          state.push(item)        }      }    }  }}

状态存储示例ActModuleActTree

属性名类型说明
parentModuleActModule父模块
tierLimitnumber撤销层数限制
parallLimitnumber重做纵向层数限制
gettersobject视图集合,从外部可以通过该属性来获取状态数据
方法名参数说明
nowTier-返回当前状态的结点层级
undoable-当前状态是否还能撤销
redoLength-返回当前状态的可重做分支数
isFull-返回当前结点树是否已满
isEmpty-返回当前结点树是否为空
recovertier将数据撤销到第tier层
emptying-清空当前状态之前的结点
addListenertype,listener添加事件监听器
removeListenertype,listener移除事件监听器
createModulesoptions创建一个或多个子模块
getModulemodulePath根据路径modulePath获取某个后代模块
doactionKey,args将args作为执行参数,执行名为actionKey的操作
undo-撤销一次
redoindex从index分支重做一次
1.2.5

1 year ago

1.2.4

2 years ago

1.2.3

2 years ago

1.2.2

2 years ago

1.2.1

2 years ago

1.2.0

2 years ago

1.1.2

2 years ago

1.1.1

2 years ago

1.1.0

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago