我更熟悉功能组件,但我必须修复一些先前构建的类组件。我想做的是,
useEffect(() => {
if (state1) {
// do this
// change state state1 -> false
}
}, [state1])
在类组件中类似这样的内容。我尝试的是
componentWillReceiveProps = (nextProps) => {
if (nextProps.state1 !== this.props.state1) {
if (nextProps.state1) {
// do this
} else {
// revert this
}
// update state
this.setState({ state1: !this.state.state1 });
}
}
显然,这很奇怪。但是我很困惑,因为 componentWillReceiveProps
收到 prop
作为一个参数。因此,我不确定我应该如何将状态设置为检测状态的变化。
有什么帮助吗?
1条答案
按热度按时间eufgjt7s1#
您可能希望使用componentdidupdate,而不是componentwillreceiveprops。组件WillReceiveProps将从react中删除,并且它经常被误用。
使用componentdidupdate,您将执行以下操作:
如果您也需要在第一次渲染后运行此代码,则可能需要在componentdidmount中执行类似的代码。