我有一個呈現頁面上的項目的React組件。這些項目從網絡中檢索。在React/Redux應用程序中爲網絡請求定位邏輯
這些項目應該在組件加載時檢索和渲染。
在組件加載完成後,還會有一種更新項目的機制。
我的第一個想法是將網絡請求放在componentDidMount
函數中。
這樣做是否會打破與redux和單向數據流/不可變性相關的最佳實踐?
取而代之的是,我應該向商店發送一個動作,並依靠redux中間件來執行網絡請求(最終會更改存儲並導致組件的重新渲染)?
我有一個呈現頁面上的項目的React組件。這些項目從網絡中檢索。在React/Redux應用程序中爲網絡請求定位邏輯
這些項目應該在組件加載時檢索和渲染。
在組件加載完成後,還會有一種更新項目的機制。
我的第一個想法是將網絡請求放在componentDidMount
函數中。
這樣做是否會打破與redux和單向數據流/不可變性相關的最佳實踐?
取而代之的是,我應該向商店發送一個動作,並依靠redux中間件來執行網絡請求(最終會更改存儲並導致組件的重新渲染)?
如果您的數據是本地數據,請在componentWillMount中執行,如果您的數據是全局數據,則通過調用操作來完成。
所以在componentDidMount
和componentWillMount
基本上做異步呼叫是一樣的。很可能,componentWillMount
中的異步調用在啓動componentDidMount
之前不會返回。但是,如果您在componentDidMount
中撥打同一個電話,它將會返回。
在componentDidMount
中進行異步調用可以清楚地看到,組件將首先在沒有數據的情況下渲染,然後在數據到達時重新渲染,這在componentWillMount
中是隱含的。
如果您的數據是本地數據,請在'componentWillMount'內執行,如果您的數據是全局數據,則通過調用'action'來完成。 – nrgwsth
如果你做出這個答案,我會接受... – Ben
@anuragasaurus通過將邏輯放在componentWillMount中,組件的DOM將不會出現。那麼在調用componentDidMount之前,異步網絡調用是否會返回?如果發生這種情況,我會得到意外的行爲嗎?我無法想象會發生什麼.... – Ben