热门

最新

红包

立Flag

投票

同城

我的

发布
dadadalala1
dadadalala1
5 年前
truedadadalala1

这个程序是把十个数排序,为啥会输出一个那么大的值

CSDN App 扫码分享
分享
8
5
打赏
  • 复制链接
  • 举报
下一条:
写过React的都知道,我们在SetTimeout中调用setState时是同步更新state的,这是为什么呢?并不是setTimeout改变了setState,而是setTimeout帮助setState“逃脱”了React对它的管控(setTimeout的回调异步执行,使得本该在React全局变量isBatchingUpdates为true时执行的,变成了在false执行了,使得当前场景下的setState具备了立刻发起同步更新的能力,类似如下代码),只要是在React管控下的setState,那就一定是异步的。reduce = () => { // 进来先锁上 isBatchingUpdates = true setTimeout(() => { console.log('reduce setState前的count', this.state.count) this.setState({ count: this.state.count - 1 }); console.log('reduce setState后的count', this.state.count) },0); // 执行完函数再放开 isBatchingUpdates = false}
立即登录