Volevo controllare cosa succede quando usi this.setState più volte (2 volte per il bene della discussione). Ho pensato che il componente verrà renderizzato due volte ma a quanto pare è renderizzato solo una volta. Un'altra aspettativa che avevo era che forse la seconda chiamata per setState verrà eseguita sulla prima, ma hai indovinato - ha funzionato bene.
Collegamento a un 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')
);
Come vedrai, ad ogni rendering viene visualizzato un avviso che dice "render".
Hai una spiegazione del motivo per cui ha funzionato correttamente?
this.state.alex
: cosa succede se aggiungi anche un elemento che dipendethis.state.value
?