immer applyPatches不更新状态

时间:2020-05-12 01:36:03

标签: immer.js

我正在尝试使用沉浸式补丁程序在我的应用中实现撤消/重做功能。但是由于某种原因,它不起作用。我在下面粘贴相关代码段。我确认传递给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,
        };
    }
    )
}

1 个答案:

答案 0 :(得分:0)

我认为您必须在 RESET 情况下增加/减少索引。 会详细说明

https://techinscribed.com/implementing-undo-redo-functionality-in-redux-using-immer/