Ein einfaches Beispiel wäre eine App, die Eingabedaten vom Benutzer sammelt und diese Daten dann mit Ajax in eine Datenbank hochlädt. Hier ist ein vereinfachtes Beispiel (nicht ausgeführt - möglicherweise Syntaxfehler):
export default class Task extends React.Component {
constructor(props, context) {
super(props, context);
this.state = {
name: "",
age: "",
country: ""
};
}
componentDidUpdate() {
this._commitAutoSave();
}
_changeName = (e) => {
this.setState({name: e.target.value});
}
_changeAge = (e) => {
this.setState({age: e.target.value});
}
_changeCountry = (e) => {
this.setState({country: e.target.value});
}
_commitAutoSave = () => {
Ajax.postJSON('/someAPI/json/autosave', {
name: this.state.name,
age: this.state.age,
country: this.state.country
});
}
render() {
let {name, age, country} = this.state;
return (
<form>
<input type="text" value={name} onChange={this._changeName} />
<input type="text" value={age} onChange={this._changeAge} />
<input type="text" value={country} onChange={this._changeCountry} />
</form>
);
}
}
Wenn sich also die Komponente stateändert, werden die Daten automatisch gespeichert. Es gibt auch andere Möglichkeiten, dies zu implementieren. Dies componentDidUpdateist besonders nützlich, wenn ein Vorgang ausgeführt werden muss, nachdem das DOM aktualisiert und die Aktualisierungswarteschlange geleert wurde. Es ist wahrscheinlich am nützlichsten auf komplexe rendersund stateoder DOM ändert oder wenn Sie etwas brauchen , das zu sein , absolut ausgeführt letzte Sache werden.
Das obige Beispiel ist zwar recht einfach, beweist aber wahrscheinlich den Punkt. Eine Verbesserung könnte darin bestehen, die Häufigkeit zu begrenzen, mit der die automatische Speicherung ausgeführt werden kann (z. B. maximal alle 10 Sekunden), da sie derzeit bei jedem Tastendruck ausgeführt wird.
Ich habe auch eine Demo zu dieser Geige gemacht, um sie zu demonstrieren.
Weitere Informationen finden Sie in den offiziellen Dokumenten :
componentDidUpdate()wird sofort nach der Aktualisierung aufgerufen. Diese Methode wird beim ersten Rendern nicht aufgerufen.
Nutzen Sie dies als Gelegenheit, um das DOM zu bearbeiten, wenn die Komponente aktualisiert wurde. Dies ist auch ein guter Ort, um Netzwerkanforderungen auszuführen, solange Sie die aktuellen Requisiten mit früheren Requisiten vergleichen (z. B. ist eine Netzwerkanforderung möglicherweise nicht erforderlich, wenn sich die Requisiten nicht geändert haben).