是正确的,道具在改变状态后出现了吗?如果我单击按钮,我会调用handleClickOut
,然后在getDerivedStateFromProps
中做一些比较,在第一行if (Object.keys(props.current).length !== 0 && state.open)
中我有一个新的状态clickedAway: true
,但道具没有改变(我改变了并在其他组件中发送道具),然后状态返回到clickedAway: false
,并在下一周期更改道具。
static getDerivedStateFromProps(props, state) {
if (Object.keys(props.current).length !== 0 && state.open) {
return {
current: props.current,
loading: false,
clickedAway: false
}
} else if (!state.clickedAway && Object.keys(props.current).length === 0) {
return {
current: state.current
}
} else {
return {
current: {}
}
}
}
handleClickOut = () => {
this.setState({
clickedAway: true
})
}