javascript - 既然setState是异步的,那么它是通过回调队列执行的吗?

标签 javascript reactjs

我是 React 的新手,正在学习 setState 是如何在幕后工作的。因此,我想就此提出一些问题。首先,setState 总是异步的吗?如果不是在什么一般情况下它是同步的。其次,setState中的异步是如何通过web api执行然后回调队列的?伙计们,如果不清楚,请告诉我。我真的需要你的帮助。

最佳答案

是的。它总是异步的,从不同步。 开发人员常犯的错误是这样的

 handleEvent(newValue) {
   this.setState({ value: newValue }, () => {
      // you can get the updated state here
      console.log(this.state.value)
   })
   this.doSomething(newValue)
 }

 doSomething(newValue) {
   // this.state.value is still the old value
   if (this.state.value === newValue) {
      // blabla
   }
 }

而且您无法确定状态更新需要多长时间。

关于javascript - 既然setState是异步的,那么它是通过回调队列执行的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57721530/

相关文章:

javascript - 使用 Chrome 控制台通过 RequireJS 访问 Knockout ViewModel

javascript - 由于模块的 js 文件中的 "Import",ts-jest 无法运行 tsx 测试文件

reactjs - React - 使用 React 显示错误和积极警报

javascript - React select - 如何根据其他选择字段的选取选项来过滤选择?

php - PHP/JS/DOM 中的引号

javascript - 文本变为 "Red"颜色;找不到使它成为 "Red"的代码

javascript - 在选择选项值中使用 Json - 由于双引号引起的错误

javascript - 如何使用 ReactJs 实现 `Search box` 到 `props items`

reactjs - 使用 Link 导航时,具有 next-redux-wrapper 状态的 Next.js 被重置为初始值

javascript - 我怎样才能添加温度。 meteor 发布的字段