当前位置: 首页 > 知识库问答 >
问题:

setState每秒调用工作一次

杜昆琦
2023-03-14

电子邮件部分也很好,当我提交表单时,它会更新。

更改passwordinvalid函数是:

passwordValidator = (email) => {
    this.setState(() => {
      if (email === 'test') {
        this.setState({ passwordInvalid: true });
      }
      else {
        this.setState({ passwordInvalid: false });
      }
    })
  }

并且是这样称呼的:

  mySubmitHandler = (event) => {
    this.passwordValidator(this.state.email);
    if (this.state.passwordInvalid) {
      event.preventDefault();
      alert("Email: '" + this.state.email + "' is invalid.");
    }
    else {
      event.preventDefault();
      alert("Email address submitted: " + this.state.email);
    }
  }

共有1个答案

岳允晨
2023-03-14

正如你所指出的:

setState()不会立即改变this.state,而是创建一个挂起的状态转换。

这意味着,您的set state调用将异步执行。

this.passwordValidator(this.state.email);
if (this.state.passwordInvalid) {
mySubmitHandler = (event) => {
  event.preventDefault();
  const isPasswordValid = this.passwordValidator(); // will get state value automatically then calculate if its valid
  this.setState({ passwordInvalid: isPasswordValid });
  if (isPasswordValid ) {
    alert("Email: '" + this.state.email + "' is invalid.");
  }
  else {
    alert("Email address submitted: " + this.state.email);
  }
}
 类似资料:
  • 问题内容: 使用它可以在指定的时间启动功能: 但是,如果我想多次启动该功能怎么办?每次经过一个时间间隔,我都想执行该功能(假设每60秒执行一次)。 问题答案: 如果您不在乎内的代码是否可能花费比您的间隔更长的时间,请使用: 一遍又一遍地触发作为第一个参数传入的函数。 更好的方法是与函数一起使用: 这样可以保证在执行代码之前不会进行下一个调用。在本示例中,我将其用作函数参考。这是给函数命名并在其中调

  • 本文向大家介绍ajax的定时调用每5秒调用一次,包括了ajax的定时调用每5秒调用一次的使用技巧和注意事项,需要的朋友参考一下

  • 问题内容: 我有一个这样构造的mysql反馈数据库: 名称| 位置| 反馈 瑞安| 英格兰| 大力支持 显然,条目更多。我正在尝试建立一个反馈div,它通过ajax每10秒显示一个新的反馈项。 所以我构造了这个: 这是我的PHP文件: 但是,这仅显示两个。它不会一直显示新的,而是纯粹显示第一个然后显示第二个并停止。 我究竟做错了什么?谢谢 :) 问题答案: 你想做一个吗? 要么: 或者,如果您希望

  • 问题内容: 每次调用时,React都会重新渲染所有组件和子组件吗? 如果是这样,为什么?我以为这个想法是,当状态改变时,React只渲染所需的内容。 在下面的简单示例中,尽管onClick处理程序始终将设置为相同的值,但是在随后的单击中状态不会改变,这两个类在单击文本时都再次呈现。 我曾希望只有在数据更改的情况下才会进行渲染。 这是示例代码,例如JS Fiddle和嵌入式代码段: 问题答案: 每次

  • 问题内容: 每次调用时,React都会重新渲染所有组件和子组件吗? 如果是这样,为什么?我以为这个想法是,当状态改变时,React只能渲染所需的内容。 在下面的简单示例中,尽管onClick处理程序始终将设置为相同的值,但是在随后的单击中状态不会改变,这两个类都在单击文本时再次呈现。 我曾希望只有在数据更改的情况下才会进行渲染。 这是示例代码,例如JS Fiddle和嵌入式代码段: 问题答案: 每

  • 问题内容: 如果我希望每N秒重新加载整个页面,则可以在HTML中输入以下内容: 是否有针对AJAX调用执行相同操作的标准做法?我想安排一个AJAX调用每10秒关闭一次,以便更新页面的某些部分,而不刷新整个页面。如果我可以在不同的时间安排多个AJAX调用会更好,因为页面的某些部分可能需要比其他部分更频繁地更新。 TIA 问题答案: 您可以使用或(后者可能最适合您想要的操作)。 …其中是一个通过AJA