Ich wollte überprüfen, was passiert, wenn Sie this.setState mehrmals verwenden (2 Mal für die Diskussion). Ich dachte, dass die Komponente zweimal gerendert wird, aber anscheinend wird sie nur einmal gerendert. Eine andere Erwartung, die ich hatte, war, dass vielleicht der zweite Aufruf von setState über den ersten läuft, aber Sie haben es erraten - es hat gut funktioniert.
Link zu einer JSfiddle
var Hello = React.createClass({
render: function() {
return (
<div>
<div>Hello {this.props.name}</div>
<CheckBox />
</div>
);
}
});
var CheckBox = React.createClass({
getInitialState: function() {
return {
alex: 0
};
},
handleChange: function(event) {
this.setState({
value: event.target.value
});
this.setState({
alex: 5
});
},
render: function() {
alert('render');
return (
<div>
<label htmlFor="alex">Alex</label>
<input type="checkbox" onChange={this.handleChange} name="alex" />
<div>{this.state.alex}</div>
</div>
);
}
});
ReactDOM.render(
<Hello name="World" />,
document.getElementById('container')
);
Wie Sie sehen werden, wird bei jedem Rendern eine Warnung mit der Aufschrift "Rendern" angezeigt.
Haben Sie eine Erklärung, warum es richtig funktioniert hat?
this.state.alex
- was passiert, wenn Sie ein Element hinzufügen, das ebenfalls davon abhängtthis.state.value
?