2017-04-23 14 views
1

Immutable.jsのドキュメントでは、React.jsのsetStateを使用して状態を正しく変更する方法が十分に分かりません。ReactでImmutable.jsを使用して状態を変更する

私は、次の機能があります:それは作業を行いますが、問題がImmutable.jsを使用しての目的に反している、あなたがこれを行う際にデータがもはや不変であるということではありませんが、事

createComment(comment) { 

    const comments = Immutable.fromJS(this.state.comments); 
    var tempList = comments.concat({ 
     text: comment, 
     isAdmin: false 
    }); 
    this.setState({ comments: tempList.toJS() }); 

} 

をあなたが不変オブジェクトをsetState関数に渡すことができないということです。それでは、どうやってこれを正確に行うのですか?

comment.get is not a function 

答えて

0

あなたは、このガイドをお読みください:Immutable as React state

は、私はエラーを取得するためのデータは、もはや不変である知っています。 .toJS()に電話する必要はありません。

これは完全に罰金です。状態はのリアクトSETSTATEのAPIは、オブジェクトリテラルを期待するので、プレーンなJSオブジェクトではなく、不変コレクションである必要があり、それをマージすることを

const comments = Immutable.fromJS(this.state.comments); 
var tempList = comments.concat({ 
    text: comment, 
    isAdmin: false 
}); 
this.setState({ comments: tempList }); 
+0

注(Object.assign)と前の状態。 – amd

+0

はい 'this.setState({comments:tempList})';は動作していますが、 'this.setState(tempList);'は不変なリストを受け取るために動作しません。 githubの例では '.toJS()'は使われていません。 –

+0

コメントは不変オブジェクトです。おそらくうまくいかないでしょう。 – amd

関連する問題