2016-10-04 8 views
1

反応がある単純なカウンタを実行しようとしましたが、++が機能しないことがわかりました。なぜ私は不思議です。反応状態の設定にインクリメント++演算子が機能しない

これは

.. 

addCount() { 
    this.setState({count:this.state.count+1}) 
} 
.. 

を働いていた。しかしx++式が最初にそれをインクリメントし、その後xの値を返すので、これは

.. 

addCount() { 
    this.setState({count:this.state.count++}) 
} 
.. 

を動作しません。あなたはここに https://jsfiddle.net/Lwvbe2o2

答えて

1

それを試すことができます

最初に++xをインクリメントしてから、インクリメントされた値を返します。

あなたは前置インクリメント

addCount() { 
    this.setState({count:++this.state.count}) 
} 

このような文献を使用することができます。 MDN postfix/prefix increment operator ++

+0

私はあなたの質問に「私は不思議に思う」と答えています。それ以外の場合、this.setState({count:this.state.count + 1}) 'はより慣用的です。 – bakkal

+0

ああ意味があります! tq –

0

「a = b ++」を実行すると、まずbの値をaに代入し、次にbを増やします。ポストインクリメントと呼ばれています。 あなたの例では同じです: 'カウント'は'this.state.count 'に等しくなります(したがって値は同じになります)。そして、あなたは'this.state.count'をインクリメントしますが、状態を変更したためsetStateが終了したときにカウントします。 setStateは変数を設定するためのものです。このメソッドでは変数を変更しないでください。

あなたの最初の命題は、あなたがしたいことをする方法です。

希望すると便利です。

関連する問題