1

我正在尝试将我的一些平面状态设置组合成一个设置状态对象,同时,我想将此对象转换为不可变的 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

顺便提一句。航空公司元素是一个对象数组

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

4

2 回答 2

1

settings需要像这样被引用this.state.settings.setIn...

于 2016-07-19T19:03:36.707 回答
1

正如错误所说,settings未在此位置定义。

相反,请参考settings您的状态部分

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

编辑: 您也setIn错误地使用了 ImmutableJS 的功能:

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

有关更多详细信息,请参阅文档此 SO 答案

于 2016-07-19T19:04:24.040 回答