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

ところで。Airlines 要素はオブジェクトの配列です

誰かが私を助けることができますか?私のアプローチは方向的に正しいですか?そして、航空会社の配列が最初に設定されて更新が必要になったら、後で (更新時に) 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()}),
});

編集: ImmutableJS のsetIn関数も間違って使用しています:

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

詳細については、ドキュメントまたはこの SO 回答を参照してください。

于 2016-07-19T19:04:24.040 に答える