【问题标题】:React validating whether one of the input fields are been entered反应验证是否输入了输入字段之一
【发布时间】:2017-05-29 10:02:12
【问题描述】:

我有一个场景,我必须验证其中一个输入字段是否输入了值。

在每个输入字段的 OnBlur 事件中,我获取值并设置为状态,同时我检查其中一个输入框中是否有值并设置 inputIsReq 状态。我在每个文本字段的 required 属性中使用了 inputIsReq。在此更改之后,我的页面加载速度非常慢,并且验证也不会发生。有什么办法解决这个问题吗?

【问题讨论】:

  • 首先,您提供的这些代码根本不起作用... 1. render() { 不是render { 2. 它会抛出语法错误Syntax error: Adjacent JSX elements must be wrapped in an enclosing tag 请先修复明显的错误。
  • 糟糕,这是一个意外错误,正在更改我的实际代码。现在纠正它。感谢您的指出。
  • 现在更好了 ;) 但您仍然必须从 render() 函数返回一个节点 (Adjacent JSX elements must be wrapped in an enclosing tag)
  • 你知道为什么这个问题还在发生吗?
  • 我也做了一些逻辑更改,但我仍然遇到同样的问题:(

标签: validation reactjs input


【解决方案1】:

您的代码运行缓慢,因为您正在调用方法 changeInputValue 而不是将其作为回调传递。

这将调用 changeInputValue:

错误: onBlur={this.changeInputValue("input_4_value", this)}

正确: onBlur={() => this.changeInputValue("input_4_value", this)}

以上示例将 changeInputValue 作为回调传递。

你也可以 onBlur={changeInputValue} 但是你不能将任何参数传递给回调

您在循环中调用 changeInputValue,因为它已更改状态,然后重新渲染组件等等...这也在控制台中产生警告

warning.js:36 警告:setState(...):无法在现有期间更新 状态转换(例如在渲染或其他组件的 构造函数)。渲染方法应该是 props 的纯函数和 状态;构造函数副作用是一种反模式,但可以移动 到组件WillMount。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    • 2011-07-11
    • 2021-08-02
    相关资源
    最近更新 更多