Почему, когда я делаю this.setState({count:this.state.count*2})
, он работает, но когда я делаю: this.setState({count:this.state.count++})
он не работает?Как использовать оператор инкремента в React
Почему и как его исправить?
Полный код:
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/
Да, тонкий, но имеет смысл. Инкрементный оператор (++) работает непосредственно против значения состояния, поэтому да, не следует допускать. Но не очевидно. Благодаря! – Maniaque