在 React 中,为什么 setState() 优先级执行比 setTimeout ?



在 React 中,setState()是异步函数,setTimeout()也是异步函数(有人认为,在某些情况下,setState()可能是同步函数?(, 为什么setState()优先执行而不是setTimeout()

componentDidMount(){
this.setState({val: this.state.val + 1}, ()=>{
console.log("In callback " + this.state.val);
});
console.log("Direct call " + this.state.val);   
setTimeout(()=>{
console.log("begin of setTimeout" + this.state.val);
this.setState({val: this.state.val + 1}, ()=>{
console.log("setTimeout setState callback " + this.state.val);
});
setTimeout(()=>{
console.log("setTimeout of settimeout " + this.state.val);
}, 0);
console.log("end of setTimeout " + this.state.val);
}, 0);
}
> Direct call 0
> In callback 1
> begin of setTimeout 1
> setTimeout setState callback 2
> end of setTimeout 2
> setTimeout of settimeout 2

没有必要使用 setTimeout。 setState 函数支持回调函数。

setState(updater[, callback])

最新更新