在 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 }
})),
关于应该重置状态的片段。
我在商店里有几个数组、字符串等
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 }
})),
关于应该重置状态的片段。