Javascript 是否将超时设置为react setState上的回调?

Javascript 是否将超时设置为react setState上的回调?,javascript,reactjs,Javascript,Reactjs,代码: 当react setstate上没有回调时,它正在工作,但我需要在3秒钟后将activateLightColorForYellow设置为false。如果在setTimeout之外使用setstate,则setstate不起作用。帮助?我相信您有语法错误。第二次设置超时时缺少箭头函数 请试试这个 setTimeout(() => { this.setState((state, props) => ({ acti

代码:


当react setstate上没有回调时,它正在工作,但我需要在3秒钟后将activateLightColorForYellow设置为false。如果在setTimeout之外使用setstate,则setstate不起作用。帮助?

我相信您有语法错误。第二次设置超时时缺少箭头函数

请试试这个

setTimeout(() => {
                this.setState((state, props) => ({
                  activateLightColorForRed: true
                }), () => {
                  setTimeout(
                    this.setState((state, props) => ({
                      activateLightColorForRed: false
                    })), 3000);  
                });
                red.play()
              }, 3000); 

setState
的回调用于确保状态确实已更改。
这是链式
设置超时的一个小示例:

类应用程序扩展了React.Component{
建造师(道具){
超级(道具);
此.state={
标题:“点击我”
};
this.onClick=this.onClick.bind(this);
}
onClick(e){
this.setState({title:“value 1”},()=>{
设置超时(()=>{
this.setState({title:“value 2”},()=>{
设置超时(()=>{
this.setState({title:'value 3'})
},1500);
});
}, 1000);
});
}
render(){
返回(
{this.state.title}
);
}
}
render(,document.getElementById(“根”))

删除setstate上的回调。然后在setTimeOut(父级?)下面,3秒后将对其进行评估。正确的?但是,设置状态不起作用。
setTimeout(()=> {
  this.setState((state, props) => ({ activateLightColorForRed: true }), () => {
    setTimeout(()=> {
      this.setState(()=> ({ activateLightColorForRed: false }))
    }, 3000);
    red.play();
  })
}, 3000);