当前位置: 首页 > 面试题库 >

使用异步setState

廉志强
2023-03-14
问题内容

我有调度动作的功能。我想在操作之前和之后显示一个加载程序。我知道将对象传递给时会做出反应setState。问题是如何以异步方式更新属性:

handleChange(input) {
    this.setState({ load: true })
    this.props.actions.getItemsFromThirtParty(input)
    this.setState({ load: false })
}

基本上,如果我将此属性作为应用程序状态的一部分(使用Redux),那么一切都很好,但是我真的更喜欢将此属性仅带到组件状态。


问题答案:

将其余代码包装在第一个的回调中setState

handleChange(input) {
  this.setState({
    load: true
  }, () => {
    this.props.actions.getItemsFromThirtParty(input)
    this.setState({ load: false })
  })
}

有了这个,你load可以保证被设定为true之前getItemsFromThirtParty被调用,并且load被设置回false

这假设您的getItemsFromThirtParty功能是同步的。如果不是,则将其变为promise,然后setState在链接then()方法中调用final

handleChange(input) {
  this.setState({
    load: true
  }, () => {
    this.props.actions.getItemsFromThirtParty(input)
      .then(() => {
        this.setState({ load: false })
      })
  })
}


 类似资料:
  • gRPC是否支持以下服务器和客户端之间的通信方案?1.客户端连接到服务器并调用waitMessages等方法。然后,客户端正在等待来自服务器的一些消息。2.服务器不时向客户端发送消息。例如,调用客户端的某个方法。3.客户端与服务器断开连接 我不喜欢通过轮询服务器来实现这个方案。我想调用服务器方法一次,然后等待消息。

  • 我正在为一家德国公司评估Dart,将各种Java程序移植到Dart,并对结果进行比较和分析。在浏览器中,飞镖轻松获胜。对于服务器来说,软件性能似乎是一个严重的问题(请看我的这个问题),但这基本上得到了缓解。 现在我正在移植一些“简单”的命令行工具,我没想到会有任何严重的问题,但至少有一个问题。一些工具确实会发出HTTP请求来收集一些数据,独立的Dart虚拟机只以异步方式支持它们。纵观所有我能找到的

  • 8.2 使用异步任务 注意:本节所介绍的功能要求 vim 编译包括 +job 特性。 8.2.1 简单任务体验 前文说到,Vim 的异步任务主要是针对外部命令的。那我们就先以最简单最常见的系统命 令 ls 为例,其功能是列出当前目录下的文件,若在 Windows 操作系统下或可用 dir 命令代替。 首先请在 shell 中进入一个非空目录,便于实践,并在 shell 中执行如下命令: $ ls

  • 问题内容: 在React Native中用作异步函数是一种好习惯还是应该避免呢? 我需要从安装组件时获取一些信息,但是我知道使之成为可能的唯一方法是使函数异步。 这有什么问题吗,还有其他解决方案吗? 问题答案: 让我们首先指出差异并确定差异可能如何引起麻烦。 这是异步和“同步” 生命周期方法的代码: 通过查看代码,我可以指出以下差异: 该关键字:在打字稿,这仅仅是一个代码标记。它做两件事: 强制将

  • 问题内容: 如何从异步函数返回值?我试图喜欢这个 它给了我, 问题答案: 您不能超出范围。为了获得预期的结果,您应该将其包装到异步IIFE中,即 样品。 有关更多信息 由于返回一个Promise,因此可以将其省略,如下所示: 然后像以前一样做

  • 我想进行一个基于当前状态的API调用,但不能使setState函数作为异步函数工作。 给我错误: 类型为“”的参数(状态:只读)= 如果我在setState方法之外获取数据,它会起作用,但我害怕对过时的页码进行API调用: