我有一个页面,我需要加载一些初始的Ajax数据。
我在Reactjs
page上读到我应该在componentDidMount
中进行调用。
从componentDidMount
而不是componentWillMount
提出请求的优势是什么?
答案 0 :(得分:7)
使用服务器呈现时,会调用componentWillMount
,但不会调用componentDidMount
。因此,我倾向于在componentDidMount
中进行任何需要浏览器的初始化(包括Ajax和DOM操作)。
答案 1 :(得分:4)
由于反应意图用作视图,因此您的ajax请求应该放在您的模型中。
否则,如果出于某种原因需要在视图中进行设置,componentDidMount
和componentWillMount
之间的区别在于第一个被调用一次元素重新呈现,您可以通过this.getDOMNode()
访问它,第二个在render()
开始之前调用一次。
答案 2 :(得分:4)
在componentDidMount()
中,如果需要,您可以访问DOM;在componentWillMount()
中您还没有访问权限(如果您只想调用setState
,则可能不需要它。)
确保在render()
方法中,您能够优雅地呈现“空”状态(即在Ajax结果返回之前)。 getInitialState()
可以帮助您设置一些基本空状态。