2016-09-21 54 views
4

我正在使用React-Redux來構建應用程序。爲了加載React智能組件的初始數據,我需要派發一個Redux動作來進行Ajax調用。我試過在構造函數(ES6實現),componentWillMount和assembliesnetDidMount中分派動作。他們都工作。我的問題是:在React智能組件中是否有推薦的地方應該調度該操作。在哪裏通過AJAX在ReactJS中加載初始數據

回答

6

編輯Dan Abramov recently stated

在陣營我們預計componentWillMount將火不止一次在某些情況下,所以你應該使用componentDidMount網絡請求的未來版本。


componentDidMount

here

在componentDidMount中提取數據。當響應到達時,將數據存儲在狀態中,觸發渲染以更新UI。

當異步獲取數據時,在卸載組件之前使用componentWillUnmount取消任何未完成的請求

文檔對於「爲什麼在componentDidMount」中確實很稀少。如果使用服務器端渲染,我相信componentWillMount不會被調用,所以這可能是首選componentDidMount的原因。

+0

是的。我已閱讀你提到的文檔。但試圖理解爲什麼在componentDidMount?由於在其他地方的派遣行動也起作用。 – Jane

+0

我相信componentDidMount是用於副作用,如異步操作或直接改變DOM,但目前找不到確切的來源..查看我更新的答案。 – lustoykov

1

我相信推薦的方法是在componentDidMount中執行此操作。有關更多信息,請參閱this