javascript - OnChange 表单验证 react

标签 javascript reactjs

我在 React 中遇到表单验证问题,我不知道如何解决,他在这里:

我想检查两个输入是否相同,例如两个邮件输入是否相等,以检查用户是否没有拼写错误他的邮件,但我想要动态验证,当用户写入时,同时检查。

这是我的代码:

https://codesandbox.io/s/1v4xxqjzo3

打开控制台并开始写入输入,您将在 OnChange 函数中看到两个状态永远不相等,因为这就像 Onchange 函数更新不够快,但如果我放置 setTimeout ,它将起作用,因为状态已完成。

最佳答案

setState 操作是异步的。

setState() does not immediately mutate this.state but creates a pending state transition. Accessing this.state after calling this method can potentially return the existing value. There is no guarantee of synchronous operation of calls to setState and calls may be batched for performance gains.

您应该使用setState回调函数来比较输入值:

onChangeInput(e) {
    const { name, value } = e.target;
    this.setState({
      [name]: value
    }, () => console.log(this.state.mail === this.state.confMail));
  }

关于javascript - OnChange 表单验证 react ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45916704/

相关文章:

reactjs - React-Redux componentWillReceiveProps 未使用 api 数据触发

android - 错误 : cannot find symbol BuildConfig. 调试

javascript - 将一个长的无序列表拆分为多个列表

javascript - 在 1 个元素上切换类并从其余元素中删除

javascript - 在 JavaScript/Node.js 中运行 .map 时如何跳过回调?

javascript - GetOrgChart 鼠标移动在 Chrome 和 Firefox 中损坏

javascript - 将密码存储在 Javascript localStorage 中

javascript - 更新记录后组件不会重新渲染

javascript - FullCalendar 叠加层不显示正确的值

reactjs - 如何在 Material ui 中设置 LinearProgress 的最大值?