在React中使用Immutable.js更改状态

时间:2017-04-23 01:11:01

标签: javascript reactjs immutable.js

Immutable.js的文档并没有说明如何在React.js中使用setState正确更改状态。

我有以下功能:

createComment(comment) {

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

}

它确实有效,但问题是当你这样做时数据不再是不可变的,这违背了使用Immutable.js的目的,但问题是你不能将一个Immutable对象传递给setState函数。那么我们该怎么做呢?

我知道数据不再是不可变的,因为我收到错误:

comment.get is not a function

1 个答案:

答案 0 :(得分:0)

您应该阅读本指南:Immutable as React state。您不需要致电.toJS()

这完全没问题:

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