使用示例
const arr = [1, 2, 3, 4, 5, 6];const recorder = usestaterecorder([1, 2, 3]);
传递的第二个参数可以在undo或redo方法的回调参数里接收
recorder.push(4, 'remove');
调用 undo 方法会将 usestaterecorder 内部记录的最新一个历史数据撤销添加
recorder.undo(state => {
// 从源数据中移除当前撤销的值
if (state.action === 'remove') {
// state.value -> 4
arr.splice(arr.indexof(state.value), 1);
}
});
// 调用 redo 方法会将 undo 撤销的数据进行恢复
recorder.redo(state => {
// 从源数据中恢复当前撤销的值
if (state.action === 'remove') {
arr.push(state.value);
arr.sort((a, b) => a - b);
}
});当 usestaterecorder 记录的数据超过10个时,会自动移除第一个数据。