我的 react 组件中有一个电子邮件输入:
<input
type="email"
autoComplete="email"
placeholder="Email"
required
value={this.state.formData.email}
onChange={this.handleFieldChange('email')}
/>
这会在控制台中向我发出警告:
The specified value "myemail" is not a valid email address.
每次击键,直到输入是有效的电子邮件。 我相信这是默认的 HTML5 电子邮件验证消息,因为我每次击键都会更改它的状态,因此会重新呈现它,而 HTML5 会重新验证它。将类型更改为“文本”可修复它,但我希望将其保留为“电子邮件”。为了避免那些 html5 警告,在 react 中处理这个问题的正确方法是什么?
最佳答案
对于受控输入,React 最终必须调用 Element.prototype.setAttribute()
,至少在 Chrome 52 中(我还没有用其他浏览器进行测试)这会导致警告被记录到控制台。不受控制的输入或非 React、普通 HTML5 表单不会显示此警告。
查看 DOMPropertyOperations.setValueForProperty()
在 React 源代码中,特别是第 162 行(在 v15.3.0 中)<input>
关于javascript - React.js 和 HTML5 电子邮件验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38985668/