2016-03-04 106 views
0

我想知道编程撤销和重做的基本原理是什么?特别是在React Native中。我是一名初学者程序员,我不知道如何编程撤消,因为它只是反转任何东西。React Native编程撤销/重做

使用的单人纸牌游戏,例如,可以将一个卡在卡的行之一的端部,只需在源堆转卡上或从卡行了放置卡片到王牌桩。这些都是直接编程的,但是如何实现一个简单的“撤销”按钮来逆转这些动作?并有可能达到无限的程度。

+0

你可以保持状态在数组中一个基本的例子,并在向前移动时为该数组添加一个新元素,并且在撤消时,可以简单地移除数组的最后一个元素,或者向后移动即 –

+0

我想是这样,但是对于所有不同种类的动作你都必须有几种不同的状态。我只是想知道如何编程这个基本概念。就像在Photoshop中,例如,可以做几十亿种不同的事情,然后只需单击撤消即可撤消任何一种。你必须记录每一个可能的行动的状态。 – Hasen

+0

@Hasen,这正是他们所做的。整个应用程序中的每个动作都具有知道如何“做”动作以及如何“撤消”动作的功能。这些存储在列表中作为用户选择选项并执行更改 –

回答

0

如何保持状态

http://redux.js.org/docs/recipes/ImplementingUndoHistory.html

let state = { 
    past:[], 
    present: 0, 
    future: [], 
}; 

const canUndo = state.past.length > 0; 
const canRedo = state.future.length > 0; 

const updateState = function(value) { 
    state.past = state.present; 
    state.present = value; 
}; 

const undo = function() { 
    state.future.push(state.present); 
    state.present = state.past.pop(); 
}; 

const redo = function() { 
    state.past.push(state.present); 
    state.present = state.present.pop(); 
}; 

一种终极版插件,让你重做/撤消

https://www.npmjs.com/package/redux-undo