2017-10-16 132 views
-1

當從新頁面的AsyncStorage呼叫狀態。我發現錯誤,然後我試圖console.log狀態在渲染功能我發現console.log兩次,第一個控制檯爲空,第二個是從狀態AsyncStorage。爲什麼會發生?如何解決這個問題呢?反應本機渲染兩次

+1

添加一些代碼,所以我們可以幫助你。 – zvona

+0

反應工作是在組件狀態改變時重新渲染組件。由於您正在對設備上的某些數據發出異步請求,因此您的組件在請求完成之前進行掛載。它會將console.log置空,然後在收到數據時,它將重新渲染,並再次運行控制檯日誌以顯示數據。 –

+1

這是正常的反應行爲。 –

回答

0

如果您正在異步獲取數據並更新狀態,React將根據需要調用渲染次數,以反映對狀態對象的更改,您將看到一個console.log消息,因爲組件將首次呈現,並且會一次再次提取數據並更新狀態。

換句話說,按預期工作,如果您只想記錄一次消息,請嘗試將此行移至組件構造函數或componentDidMount方法。

+0

非常感謝您的先生,我瞭解如何反應工作 – user8784065