2016-11-20 14 views
0

私は2つの画像を持っており、1日おきにその1つを表示するようになっています。 私はhttp://momentjs.com/を使用しており、storedDate = currentDateが以下のコードであるかどうかを確認しています。しかし、storeDateの状態が更新されていないことがわかります。 誰もここに光を当てることはできますか?保存された日付が現在の日付でない場合、画像を表示

getInitialState() { 
    storedDate: '' 
} 

onDateChanged(currentDate) { 
    this.setState({ storedDate: currentDate }); 
}, 

render(){ 
var currentDate = moment(); 
var displayImage; 
if (currentDate.isSame(this.state.storedDate, 'day')) { 
    displayImage = Image1; 
    this.onDateChanged(currentDate); 
} else { 
    displayImage = Image2; 
} 
} 
+0

レンダリング関数は何らかの出力を返す必要があります。 –

答えて

1

レンダー機能は、純粋な機能であると考えられます。つまり、状態を変更しないでください。

リアクションは、状態が変更されるたびに再レンダリングされるため、レンダリング関数のsetStateはレンダリングの無限ループになります。ここ

より:偶数成分の前の状態はもっと読むcomponentWillMount()のライフ・サイクル・メソッド

を使用して実装されている https://facebook.github.io/react/docs/react-component.html#render

更新: https://facebook.github.io/react/docs/react-component.html#componentwillmount

このSOの答えは、より多くの洞察力を与えることがあります。 ReactJS - Does render get called any time "setState" is called?

関連する問題