[英]ReactJS: Why is the convention to fetch data on componentDidMount?
按照此链接https://facebook.github.io/react/tips/initial-ajax.html ,
我建立了一个很棒的待办事项应用程序。 我像他们说的那样在componentDidMount
挂钩中获取数据。 我只是有一个关于为什么的问题。
为什么在安装组件后获取数据? 在我看来,一旦在钩子中的setState()
中设置了数据,它就最终会重新呈现。
为什么不只是在constructor()
获取数据并使用数据设置初始状态? 那不就是1个渲染器吗? 即使由于虚拟DOM而仅部分重新渲染,它似乎也较便宜。
提取通常会异步执行,因此尽管它位于componentWillMount
或componentDidMount
但始终会导致第二次渲染。
我相信他们建议将其放在componentDidMount
因为您可能正在使用依赖于浏览器的各种实现。 在服务器上(即节点内)执行/渲染组件时,仅componentWillMount
被执行,因此如果您使用的是浏览器/ DOM相关功能,则可能会崩溃。 其他生命周期方法(即componentDidMount
)不会在服务器上执行,因此我认为是安全和推荐的。 尽管总的来说,我发现它在需要进行DOM访问时更有用。 使用通用的ajax库(即在节点/浏览器上运行),这可能对您而言不是问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.