为什么当我做的时候this.setState({count:this.state.count*2})
它正在工作,但是当我这样做时:this.setState({count:this.state.count++})
它不起作用?
为什么,以及如何解决它?
完整代码:
var Hello = React.createClass({
getInitialState:function(){
return {count:parseInt(this.props.count)}
},
a:function(){
this.setState({count:this.state.count++})
console.log(this.state)
},
render: function() {
console.log(this.state)
return <div onClick={this.a}>Click to increment the counter<b> {this.state.count} </b></div>;
}
});
ReactDOM.render(
<Hello count="1" />,
document.getElementById('container')
);
但这段代码正在运行:
a:function(){
this.setState({count:this.state.count*2})
console.log(this.state)
},
JSFiddle:https://jsfiddle.net/69z2wepo/55100/ https://jsfiddle.net/69z2wepo/55100/
setState
是一个异步函数。 React 可能会批处理一堆setState
在一起。
所以价值this.state.count
是您发出请求时的值。
更好的解决方案是调用在执行 setState 时评估的函数。
this.setState((prevState, props) => ({
counter: prevState.counter + 1
}));
from https://facebook.github.io/react/docs/state-and-lifecycle.html https://facebook.github.io/react/docs/state-and-lifecycle.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)