Html
    Css
    Js

    
                        

                        
↑上面代码改变,会自动显示代码结果 jQuery调用版本:1.11.3
 立即下载

useStateRecder(原创)

使用示例

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

0