我對React中的狀態&道具的理解可能會讓事情不正確。這是使用React,基於Redux的應用程序。React生命週期事件 - 子組件繼承舊狀態道具
場景:
我有一個全球性的SVG
部件,它獲取視口的尺寸從componentDidMount
方法中的應用。在state
的SVG
的
缺省(根據該應用程序的初始化)道具有:
dimension : {
width : 0,
height : 0
}
的componentDidMount
從DOM 檢索width
& height
值並分派的值的狀態。
現在我有SVG
組件,它需要更新的SVG寬度&高度值重新計算默認視框&更新狀態的子組件。這需要在安裝(重要點)後僅執行一次,因此viewbox
的計算位於子組件的componentDidMount
中。
發生了什麼:
不過,我猜是因爲發生反應批量更新DOM,傳遞給子組件的道具都是默認的初始寬度&高度值,而不是更新的狀態後SVG
組件的componentDidMount
。
問:
如何我可以通過更新的狀態到子組件的componentDidMount
。注:
- 我不能使用
componentDidUpdate
,這意味着,這每次的分量被更新,它會計算缺省值&再次更新視圖,從而壓倒用戶位置。
如果您在* componentDidMount()*中設置狀態,它將重新呈現該組件。如果你想使用來自父組件的道具,你應該在* componentWillReceiveProps(nextProps)*中工作,每當組件從父組件接收道具時調用它。 –
你能顯示你的代碼嗎? –
@MarioSantini謝謝你,那就做到了。我完全忘記了這個生命週期事件:!如果你想發佈這個答案,我會接受它,因爲它是第一個。 – Kayote