在setState更新程序中使用nextProps

时间:2018-03-26 18:49:54

标签: reactjs state

是否有可能在nextProps中调用的setState中使用componentWillReceiveProps arg?

https://openlayers.org/en/latest/examples/icon.html?q=marker开始,签名定义如下:

setState((prevState, props) => stateChange[, callback])

所以我不知道除了使用浅合并之外如何使用nextProps

setState(stateChange[, callback])

例如:

componentWillReceiveProps(nextProps) {
    this.setState({
       data: nextProps.data
    }, myCallBack)
}

然而后者不适合多个setState,所以我不想/我不能使用它。

2 个答案:

答案 0 :(得分:1)

这应该像你期望的那样工作。虽然,因为你是从props而不是state中读取的,所以多个setState调用不应成为问题。

componentWillReceiveProps(nextProps) {
    this.setState( prevState => {
       return { data: nextProps.data }
    }, myCallBack)
}

答案 1 :(得分:0)

您可以通过多种方式更新您的州:

this.setState(() => {
    return {
        data: nextProps.data
    }
});

this.setState({
    data: nextProps.data
});

由于您未根据进行更新,而是在 nextProps 上进行更新,因此情况相同。您也可以进行多次setState来电,如果他们在同一呈现周期,React可以并将为您批量处理这些更新。