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

最佳答案

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

这是完全可以的:

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

关于javascript - 在React中使用Immutable.js更改状态,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43566363/

10-11 17:04