我讀componentDidMount
被初始渲染只調用一次,但我看到它得到了多次渲染。爲什麼在react.js&redux中多次調用componentDidMount?
看來我創建了一個遞歸循環。
- componentDidMount調度動作在接收到的數據來獲取數據
- ,它觸發成功動作到的數據存儲在終極版的狀態。
- 父發生反應部件連接到終極版存儲和具有
mapStateToProps
對於剛剛在上述步驟 - 父使得子組件(這是通過可變編程選擇的)
- 子組件的componentDidMount被再次調用改變了條目
- 它dispaches行動來獲取數據
我認爲這是發生了什麼。我可能是錯的。
如何停止循環?
下面是以編程方式呈現子組件的代碼。
function renderSubviews({viewConfigs, viewConfig, getSubviewData}) {
return viewConfig.subviewConfigs.map((subviewConfig, index) => {
let Subview = viewConfigRegistry[subviewConfig.constructor.configName]
let subviewData = getSubviewData(subviewConfig)
const key = shortid.generate()
const subviewLayout = Object.assign({}, subviewConfig.layout, {key: key})
return (
<div
key={key}
data-grid={subviewLayout}
>
<Subview
{...subviewData}
/>
</div>
)
})
}
哇,謝謝你的回答。我回來重新說我的問題,因爲我問的問題不清楚,這裏的答案解釋了爲什麼它發生了。謝謝 – eugene
我從這個答案中學到了很多!從反應非常優雅的方法 – cbartondock