我认为这里最大的缺陷是您
state用来存储时间间隔。尽管从技术上讲是可行的,但我认为您没有理由要这样做。
相反,只需对组件使用局部变量:
startTimer(){ if(!this.timerId){ this.timerId = setInterval(()=>{ //your function }, 1000); }}stopTimer(){ clearInterval(this.timerId);}因此,我认为您根本不需要
state在此处使用。您的帖子中还有其他一些与相关的常规问题
state,我将在下面尝试回答。请记住,它们与解决您的特定问题无关。
他们为避免异步问题做了setState()
什么?
您可以使用一个回调来执行代码 后
的
state已设置。有一个官方的文档的部分有关这一点; 它说的是:
第二个参数是可选的回调函数,将在setState完成并重新呈现组件后执行。
setState(nextState, callback);
哪种生命周期方法最适合此类情况?
与上述文档相同的部分继续:
通常,我们建议将componentDidUpdate()用作此类逻辑。
如果您
setState的函数中有多个函数,并且想在特定事件后执行特定代码,那么使用回调函数就可以了。为了更通用,请使用上面的生命周期方法。



