使用示例
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个时,会自动移除第一个数据。