Dlaczego kiedy robię this.setState({count:this.state.count*2})
to działa, ale kiedy robię: this.setState({count:this.state.count++})
to nie działa?Jak korzystać z operatora inkrementacji w React
Dlaczego i jak go naprawić?
Pełny kod:
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')
);
Ale ten kod działa:
a:function(){
this.setState({count:this.state.count*2})
console.log(this.state)
},
JSFiddle: https://jsfiddle.net/69z2wepo/55100/
tak, subtelne, ale ma sens. Inkrementalny operator (++) działa bezpośrednio w stosunku do wartości stanu, więc tak, nie powinno być dozwolone. Ale nie oczywiste. Dzięki! – Maniaque