Suche…


Kontrollierte Komponenten

Kontrollierte Formularkomponenten werden mit einer value definiert. Der Wert der kontrollierten Eingaben wird von React verwaltet. Benutzereingaben haben keinen direkten Einfluss auf die gerenderten Eingaben. Eine Änderung der value Eigenschaft muss stattdessen diese Änderung widerspiegeln.

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>
    )
  }
}

Das obige Beispiel zeigt, wie die value Eigenschaft den aktuellen Wert der Eingabe definiert und der onChange Ereignishandler den onChange der Komponente mit der Benutzereingabe aktualisiert.

Formulareingaben sollten nach Möglichkeit als kontrollierte Komponenten definiert werden. Dadurch wird sichergestellt, dass der Komponentenstatus und der Eingabewert jederzeit synchron sind, auch wenn der Wert durch einen anderen Trigger als eine Benutzereingabe geändert wird.

Unkontrollierte Komponenten

Unkontrollierte Komponenten - Eingänge, die keinen haben value Eigenschaft. Im Gegensatz zu kontrollierten Komponenten ist es die Aufgabe der Anwendung, den Komponentenstatus und den Eingangswert synchron zu halten.

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>
    )
  }
}

Hier wird der Status der Komponente ebenso wie bei kontrollierten Komponenten über den onChange Ereignishandler aktualisiert. Anstelle einer value Eigenschaft wird jedoch eine defaultValue Eigenschaft angegeben. Dies bestimmt den Anfangswert der Eingabe während des ersten Renderns. Nachfolgende Änderungen des Zustands der Komponente werden vom Eingabewert nicht automatisch übernommen. Wenn dies erforderlich ist, sollte stattdessen eine kontrollierte Komponente verwendet werden.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow