我正在尝试使用沉浸式补丁程序在我的应用中实现撤消/重做功能。但是由于某种原因,它不起作用。我在下面粘贴相关代码段。我确认传递给applyPatches的“状态”具有新的状态/数据,并且“ patchHist [index] .undo”具有我需要的正确的撤消状态。控制台上也没有显示任何错误,但是不会使用数据更新状态。我在这里想念东西吗?
import produce, {applyPatches, enablePatches} from 'immer';
enablePatches();
let index = -1;
function data(state:initState, action) {
return produce(
state,
draft => {
switch (action.type)
case FETCH:
....
case RESET:
applyPatches(state, patchHist[index].undo);
break;
},
(patches, inversePatches) => {
index++;
patchHist[index] = {
redo: patches,
undo: inversePatches,
};
}
)
}
答案 0 :(得分:0)
我认为您必须在 RESET 情况下增加/减少索引。 会详细说明
https://techinscribed.com/implementing-undo-redo-functionality-in-redux-using-immer/