当一切看起来都很好时,不可变的js中的KeyPath无效?

时间:2017-11-30 12:07:14

标签: javascript reactjs immutable.js

我是immuatblejs的新手我很困惑,当我的程序看起来很好时我得到无效的密钥路径错误 enter image description here

我的国家

const initialState = fromJS({
    text:null,
    master:null,
    inputBoxStatus:false
});
在componentMounted之后,主密钥将填充数组我只想替换或更新对象的嵌套数组值

1 个答案:

答案 0 :(得分:0)

您应该在master指令之前验证setIn属性的内容。如果属性master包含immutable List,它应该可以正常工作,如下例所示:

const { fromJS } = require('immutable');

const initialState = fromJS({
    text: null,
    master: [{ something: 'fizz' }, { other: 'buzz' }],
    inputBoxStatus: false
});

const modifiedState = initialState.setIn(['master', 0], { test: 'works!' });

console.log(modifiedState.get('master')); // List [ [object Object], Map { "other": "buzz" } ]

但是,如果它包含null,则会失败并显示您显示的错误消息:

const initialState = fromJS({
    text: null,
    master: null,
    inputBoxStatus: false
});

const modifiedState = initialState.setIn(['master', 0], { test: 'works!' });

另请注意,您可以在不可变对象中引入可变对象{ test: 'works!' }。你确定这是你想要的吗?