2017-07-19 70 views
1

我有一個呈現頁面上的項目的React組件。這些項目從網絡中檢索。在React/Redux應用程序中爲網絡請求定位邏輯

這些項目應該在組件加載時檢索和渲染。

在組件加載完成後,還會有一種更新項目的機制。

我的第一個想法是將網絡請求放在componentDidMount函數中。

這樣做是否會打破與redux和單向數據流/不可變性相關的最佳實踐?

取而代之的是,我應該向商店發送一個動作,並依靠redux中間件來執行網絡請求(最終會更改存儲並導致組件的重新渲染)?

+1

如果您的數據是本地數據,請在'componentWillMount'內執行,如果您的數據是全局數據,則通過調用'action'來完成。 – nrgwsth

+0

如果你做出這個答案,我會接受... – Ben

+0

@anuragasaurus通過將邏輯放在componentWillMount中,組件的DOM將不會出現。那麼在調用componentDidMount之前,異步網絡調用是否會返回?如果發生這種情況,我會得到意外的行爲嗎?我無法想象會發生什麼.... – Ben

回答

1

如果您的數據是本地數據,請在componentWillMount中執行,如果您的數據是全局數據,則通過調用操作來完成。

所以在componentDidMountcomponentWillMount基本上做異步呼叫是一樣的。很可能,componentWillMount中的異步調用在啓動componentDidMount之前不會返回。但是,如果您在componentDidMount中撥打同一個電話,它將會返回。

componentDidMount中進行異步調用可以清楚地看到,組件將首先在沒有數據的情況下渲染,然後在數據到達時重新渲染,這在componentWillMount中是隱含的。

相關問題