2017-11-26 8 views
0

私は練習用のカレンダーアプリを構築しようとしています。私はcurrent_month: 1を持っている、とcurrent_month値が12になったとき、私はcurrent_monthを高めるために機能IncreaseMonth()を持っていますが、状態はReactJs状態の変化と値が私の望むものではない

、私はそれは私がそれを行うにはcomponentWillUpdate()ライフサイクルメソッドを使用してみてください1.

に変更したいです、以下のコードで:

componentWillUpdate(prev, next) { 
    if (next.current_month == 13) { 
    this.setState({current_month: 1}) 
    } 
} 

しかし、私は状態を設定するcomponentWillUpdate()を使用しないように私に言うのライフサイクルについてのチュートリアルを、見ます。

これを行うより良い方法はありますか?

+1

「IncreaseMonth」関数の内部だけをチェックするのではなく、current_monthが12の場合、setStateが1に設定されている場合は? –

+1

また、 '%13'を使用して結果を制限することができます。12 –

+1

' current_month> 12'であるかどうかをチェックし、そこに状態を設定するメソッドを作成できます。 –

答えて

3

正しい方法は、月の値をIncreaseMonth()に移動することです。そのイベントは、コンポーネントが再レンダリングされようとしていることを示すためにトリガされ、そしてあなたは、このメソッド内で決めることができるようあなたがcomponentWillUpdate()のライフサイクルイベントの状態を設定してはいけません

IncreaseMonth =() => { 
 
    let month = 1; 
 
    if (this.state.current_month < 12) { 
 
    month = this.state.current_month + 1; 
 
    } 
 
    
 
    this.setState({ 
 
    current_month: month 
 
    }); 
 
}

コンポーネントが再レンダリングを続けるかどうかを指定します。このメソッドがtrueを返す場合、コンポーネントは再レンダリングされます。詳細については、official documentation

+0

ありがとう、それは動作します! –

関連する問題