报错信息:
代码:
function Answer (props) {
const [countDown, setCountDown] = useState(3)
if (countDown > 0) {
setTimeout(() => {
setCountDown(countDown - 1)
}, 1000);
} else {
props.setStatus('guessing')
}
return (
<Fragment>
<div className="box" style={props.style}></div>
<span className="num">{countDown}</span>
</Fragment>
)
}
问题描述:
子组件是一个倒计时组件,当倒计时结束时,修改父组件的状态去渲染其他组件。请问要如何处理?
这种写法在 React 中是不正确的,每次更新 state 时,函数组件都会重新执行一遍,父组件的状态更新也会导致 该组件 重新执行,所以你的实现有如下问题
正确的实现需要用到 useEffect 来处理副作用 和 清除依赖,如下