我正在尝试将一些平面状态设置组合到一个设置状态对象中,同时,我想将此对象转换为不可变的JS状态对象。
虽然我已经在构造函数中设置了初始状态,但我的密钥没有定义,但是我收到了错误。
这是我到目前为止所做的:
constructor() {
super();
this.state = {
"settings": Immutable.Map()
};
}
然后在componentWillMount中(因为我从外部API获取数据):
componentWillMount() {
/* Some code */
this.setState({
settings: settings.setIn({airlines: Immutable.fromJS(airlines).toList()}),
});
}
我得到的错误是:未捕获的ReferenceError:未定义设置
顺便说一下。 airlines元素是一个对象数组
有人可以帮帮我吗?我的方法是否正确?一旦首次设置航空公司阵列并且我需要更新,或者使用setIn更安全,我是否需要在事后使用updateIn(更新时)?
答案 0 :(得分:1)
settings
需要像this.state.settings.setIn...
答案 1 :(得分:1)
如错误所示,settings
未在此位置定义。
相反,指的是您所在州的settings
切片:
this.setState({
settings: this.state.settings.setIn({airlines: Immutable.fromJS(airlines).toList()}),
});
修改强>
您还错误地使用了ImmutableJS'setIn
函数:
this.setState({
settings: this.state.settings.setIn(['airlines'], Immutable.fromJS(airlines).toList()),
});
有关详细信息,请参阅the docs或this SO answer。