ReactJS での「制御されていない入力から制御された入力への遷移エラー」を回避するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-10-25 14:05:30
オリジナル
789 人が閲覧しました

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 は未定義であるため、入力は制御されないコンポーネントになります。ただし、ユーザーが値を入力するとフィールドが更新され、入力が制御されます。

考えられる解決策:

このエラーを解決するには、次の 2 つのオプションがあります。

  1. デフォルト値でフィールドを初期化します:

    デフォルト値で初期状態のフィールドを定義します:

    <code class="javascript">this.state = {
      fields: {name: ''}
    }</code>
    ログイン後にコピー
  2. 短絡評価を使用する:

    this.state.fields.name が未定義の場合、value 属性で短絡評価を使用してデフォルト値を提供します:

    <code class="javascript"><input value={this.state.fields.name || ''} /></code>
    ログイン後にコピー

以上がReactJS での「制御されていない入力から制御された入力への遷移エラー」を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!