2016-11-20 51 views
0

我有兩個圖像,每隔一天需要顯示一個圖像。 我正在使用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

渲染函數被假設爲純函數,即它不應該改變狀態。

React每次更改狀態時都會重新渲染,因此渲染函數中的setState會引發無限循環的渲染。

這裏更多: https://facebook.github.io/react/docs/react-component.html#render

更新甚至組件之前的狀態使用componentWillMount()生命週期法

更多安裝: https://facebook.github.io/react/docs/react-component.html#componentwillmount

這SO答案可能會更深入的瞭解: ReactJS - Does render get called any time "setState" is called?