Maison > interface Web > js tutoriel > le corps du texte

Comment corriger l'avertissement « Conversion d'entrée non contrôlée en entrée contrôlée » dans ReactJS ?

Patricia Arquette
Libérer: 2024-10-25 23:17:28
original
428 Les gens l'ont consulté

How to Fix the

Avertissement de conversion d'entrée non contrôlée en entrée contrôlée dans ReactJS

ReactJS avertit les développeurs lorsqu'un composant transforme un élément d'entrée non contrôlé en un élément contrôlé. Cette erreur est associée au message suivant :


Attention : Un composant modifie une entrée non contrôlée de type texte à contrôler. Les éléments d'entrée ne doivent pas passer de non contrôlé à contrôlé (ou vice versa). Choisissez entre l'utilisation d'un élément d'entrée contrôlé ou non pendant toute la durée de vie du composant.


Comprendre la cause

L'erreur se produit lorsque l'état d'un composant initialise un champ de saisie comme non contrôlé (c'est-à-dire dépourvu d'accessoire de valeur contrôlée) mais définit ensuite sa valeur, le faisant passer efficacement à une entrée contrôlée.

Exemple de code

Considérez l'extrait de code suivant :

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

...

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")}
        type="text"
        refs="name"
        placeholder="Name *"
      />
    </div>
  )
}</code>
Copier après la connexion

Dans cet exemple, l'état est initialement un objet vide, ce qui rend le champ de saisie incontrôlé. Cependant, lorsque la valeur du champ est définie, l'entrée devient contrôlée, provoquant l'avertissement.

Solutions possibles

Pour résoudre le problème, envisagez les solutions suivantes :

  1. Initialiser les valeurs de champ dans l'état : Définissez le champ de saisie dans l'état initial avec une valeur d'espace réservé. Par exemple :
<code class="javascript">this.state = { fields: { name: '' } }</code>
Copier après la connexion
  1. Utiliser l'évaluation de court-circuit : définissez la valeur prop à l'aide de l'évaluation de court-circuit pour gérer les valeurs non définies. Par exemple :
<code class="javascript">value={this.state.fields.name || ''}</code>
Copier après la connexion

En mettant en œuvre ces solutions, vous pouvez vous assurer que vos éléments d'entrée restent dans un état cohérent, évitant ainsi l'erreur de conversion d'entrée incontrôlée en contrôlée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!