Recherche…


Composants contrôlés

Les composants de formulaire contrôlés sont définis avec une propriété value . La valeur des entrées contrôlées est gérée par React, les entrées utilisateur n'auront aucune influence directe sur l'entrée rendue. Au lieu de cela, une modification de la propriété de value doit refléter ce changement.

class Form extends React.Component {
  constructor(props) {
    super(props);
    
    this.onChange = this.onChange.bind(this);
    
    this.state = {
      name: ''
    };
  }
  
  onChange(e) {
    this.setState({
      name: e.target.value
    });
  }
  
  render() {
    return (
      <div>
        <label for='name-input'>Name: </label>
        <input
          id='name-input'
          onChange={this.onChange}
          value={this.state.name} />
      </div>
    )
  }
}

L'exemple ci - dessus montre comment la value propriété définit la valeur actuelle de l'entrée et le onChange gestionnaire d'événements met à jour l'état du composant avec l'entrée de l'utilisateur.

Les entrées de formulaire doivent être définies comme des composants contrôlés dans la mesure du possible. Cela garantit que l'état du composant et la valeur d'entrée sont synchronisés à tout moment, même si la valeur est modifiée par un déclencheur autre qu'une entrée utilisateur.

Composants non contrôlés

Les composants non contrôlés sont des entrées sans propriété de value . Contrairement aux composants contrôlés, il est de la responsabilité de l'application de maintenir l'état du composant et la valeur d'entrée synchronisés.

class Form extends React.Component {
  constructor(props) {
    super(props);
    
    this.onChange = this.onChange.bind(this);
    
    this.state = {
      name: 'John'
    };
  }
  
  onChange(e) {
    this.setState({
      name: e.target.value
    });
  }
  
  render() {
    return (
      <div>
        <label for='name-input'>Name: </label>
        <input
          id='name-input'
          onChange={this.onChange}
          defaultValue={this.state.name} />
      </div>
    )
  }
}

Ici, l'état du composant est mis à jour via le onChange gestionnaire d'événements, tout comme pour les composants contrôlés. Toutefois, au lieu d'une propriété value , une propriété defaultValue est fournie. Cela détermine la valeur initiale de l'entrée lors du premier rendu. Toute modification ultérieure de l'état du composant n'est pas automatiquement reflétée par la valeur d'entrée. Si cela est nécessaire, un composant contrôlé doit être utilisé à la place.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow