我想检查一下当你多次使用this.setState时会发生什么(为了讨论,假设使用2次)。我以为组件会被渲染两次,但实际上只渲染了一次。我还期望第二次调用setState可能会覆盖第一次,但是你猜对了——它运行得很好。
链接到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')
);
正如您所看到的,在每次渲染时都会弹出一个显示“render”的警告。
您有为什么它能正常工作的解释吗?
this.state.alex
- 如果您添加一个还依赖于this.state.value
的元素会发生什么? - Martin Wedvich