我将redux
与Immutable JS
一起使用。
我的state
是Immutable JS
对象,类似
const initialState = Immutable.fromJS({
bar: 1
foo: {
bar: 'a',
foo: 'b',
foobar: [
{
...
...
...
现在我有了减速器,通常我会做
export function foo(state = initialState, action) {
switch (action.type) {
case FOO:
return {
...state,
foo: {
...state.foo,
bar: action.value
}
};
...
但是,现在我正在使用Immutable JS
,我需要这样做
export function foo(state = initialState, action) {
switch (action.type) {
case FOO:
return {
...state, // do I need to change something here too?
foo: {
...state.get('foo'), // this changed
bar: action.value
}
};
...
但是,这使我的商店混乱了。除bar: action.value
外,我什么都放不下。似乎...state.get('foo')
不等于...state.foo
。
如何正确执行?还是我在这里使用Immutable JS
错误?
答案 0 :(得分:0)
您应该能够做到:
return state.set(['foo', 'bar'], value)
数组是对象嵌套属性中的路径,最后一个是新值。