创建 React 不可变 JS 嵌套状态

Create react immutable JS nested state

我正在尝试将我的一些平面状态设置组合成一个设置状态对象,同时,我想将这个对象转换为一个不可变的 JS 状态对象。

虽然我在构造函数中设置了初始状态,但我的密钥未定义,但我收到错误消息。

这是我目前的情况:

constructor() {
    super();

    this.state = {
        "settings": Immutable.Map() 
    };      
}

然后在componentWillMount中(因为我从外部API获取数据):

componentWillMount() {

    /* Some code */

    this.setState({
        settings: settings.setIn({airlines: Immutable.fromJS(airlines).toList()}),
    });
}

我得到的错误是:Uncaught ReferenceError: settings is not defined

顺便说一句。 airlines 元素是一个对象数组

有人可以帮帮我吗?我的方法方向正确吗?一旦首次设置航空公司数组并且我需要更新,我是否需要在之后(更新时)使用 updateIn,还是使用 setIn 更安全?

settings 需要像 this.state.settings.setIn...

一样引用

如错误所述,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 or