首页  >  文章  >  web前端  >  如何避免ReactJS中的“不受控输入到受控输入转换错误”?

如何避免ReactJS中的“不受控输入到受控输入转换错误”?

Patricia Arquette
Patricia Arquette原创
2024-10-25 14:05:30790浏览

How to Avoid the

ReactJS 中不受控输入到受控输入转换错误

React 警告不要在不受控和受控输入元素之间切换。当输入字段最初自由地接受用户输入(不受控制),然后开发人员稍后尝试通过状态控制其值(受控制)时,通常会发生此错误。

代码片段:

错误由以下代码说明:

<code class="javascript">constructor(props) {
  super(props);
  this.state = {
    fields: {},
    errors: {}
  }
}

onChange(field, e){
  let fields = this.state.fields;
  fields[field] = e.target.value;
  this.setState({fields});
}

render() {
  return(
    <div className="form-group">
      <input
        value={this.state.fields["name"]}
        onChange={this.onChange.bind(this, "name")}
        className="form-control"
        type="text"
        refs="name"
        placeholder="Name *"
      />
    </div>
  )
}</code>

根本原因:

在此代码中,问题在于字段为的初始状态初始化为空对象。当组件首次呈现时, this.state.fields.name 未定义,使输入成为不受控制的组件。但是,当用户输入值时,字段会更新,从而使输入受到控制。

可能的解决方案:

要解决此错误,有两个选项:

  1. 使用默认值初始化字段:

    使用默认值定义初始状态的字段:

    <code class="javascript">this.state = {
      fields: {name: ''}
    }</code>
  2. 使用短路求值:

    在 value 属性中使用短路求值,当 this.state.fields.name 未定义时提供默认值:

    <code class="javascript"><input value={this.state.fields.name || ''} /></code>

以上是如何避免ReactJS中的“不受控输入到受控输入转换错误”?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn