是否有可能在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
,所以我不想/我不能使用它。
答案 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可以并将为您批量处理这些更新。