在 ngrx reducer 中设置默认状态值

Set default state value in ngrx reducer

我在商店里有几个数组、字符串等

export const INITIAL_TEST_STORE: TestState = {
    one: null,
    two: null,
    three: false,
    four: {},
};

以上,您可以看到初始状态值 - 一切正常。

但是当我发送清除操作(并设置初始状态)时:

on(clearState, state => ({
    ...INITIAL_TEST_STORE
})),

four 节点仍有旧值,不为空{}

如果我执行以下操作:

on(clearState, state => ({
    ...INITIAL_TEST_STORE,
    four: {}
})),
    

一切都清楚了。我想知道为什么?问题是不可变的?但是...它是一样的...

INITIAL_TEST_STORE 是否更新了代码库中的其他地方? 调试reducer就可以确定了。

仅供参考,您也可以只 return INITIAL_TEST_STORE 而不使用展开运算符,但这不会改变结果。

展开运算符执行对象的浅拷贝,four是嵌套级别对象,展开运算符不会重置它。

on(clearState, state => ({
    ...INITIAL_TEST_STORE
    four: { ...INITIAL_TEST_STORE.four }
})),

关于应该重置状态的片段。