reactjs,获取状态并将其作为参数传递而不更改它

时间:2015-09-01 08:30:00

标签: reactjs flux

标题不是很清楚,但我的问题非常简单。我使用助焊剂模式。 我在reactclass中有一个事件处理程序,这个处理程序从用户那里获取一个输入。 我正在做的是接受这个输入并将其传递给一个动作(然后动作更新存储,最后我的状态更新)。

handler(e) {
    var newParams = this.state;
    newParams.input = e.target.value;
    MyActions.someAction(newParams);
}

正如您所看到的,我想将使用新输入完成的当前状态传递给操作。问题是,如果我这样做我直接修改当前状态而不通过setState ,并且根本不建议。我不想在我的处理程序中使用setState我想在存储更改时使用setState。

所以我的问题是我是否被迫使用像下划线_.clone()这样的东西,或者它是一种更简单的方法来做到这一点我还没见过?

1 个答案:

答案 0 :(得分:1)

如果您想首先更新状态,然后执行操作,您可以利用setState回调:

handler(e) {
    this.setState({ input: e.target.value }, () => {
         MyActions.someAction(this.state);
    });
}

是的,您需要创建一个新对象,因为您要分配的是一个引用。除_.clone之外,您有不同的方法: