如何在反应还原应用中深度还原还原状态?

时间:2018-02-18 10:23:33

标签: redux react-redux immutability

我需要使用深度冻结库深度冻结react redux应用程序中的整个redux状态,以检查状态上的任何突变。 我应该如何使用react redux app进行深度冻结来实现这一目标?

1 个答案:

答案 0 :(得分:3)

我会假设您的意思是指您使用深度冻结作为变更的测试工具(因为我不确定您为什么要冻结整个州)。一直有一些例子。

通常你会使用预期的深度冻结,并专注于你的减速器,因为减速器被赋予状态并且它们返回预期的状态。

典型的测试通常看起来像这样(taken from here):

// a test for the reducer
const testReducer = () => {
    const stateBefore = { value: 'foo' };
    const action = {
        type: 'SET_STATE',
        value: 'bar'
    };
    const stateAfter = { value: 'bar' };

    // cannot modify
    deepFreeze(stateBefore);
    deepFreeze(action);

    expect(store(stateBefore, action)).toEqual(stateAfter);
}

通过这种方式,您可以验证所采取的措施不会以任何方式改变您的状态。

Egghead.io也有关于here的好视频。

当然,用法并不仅限于测试;您可以在整个代码中引入深度冻结作为断言工具,如果您愿意的话我也应该这样做。我个人没有任何经验这样做。