Chciałem sprawdzić, co się dzieje, gdy używasz this.setState wiele razy (2 razy na potrzeby dyskusji). Myślałem, że komponent zostanie wyrenderowany dwukrotnie, ale najwyraźniej jest renderowany tylko raz. Innym oczekiwaniem było to, że może drugie wywołanie setState przejdzie przez pierwsze, ale zgadłeś - działało dobrze.
Link do 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')
);
Jak zobaczysz, przy każdym renderowaniu pojawia się alert z napisem „renderuj”.
Czy masz wyjaśnienie, dlaczego to działało prawidłowo?
this.state.alex- co się stanie, jeśli dodasz element, od którego również zależythis.state.value?