1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

在其他框架中也可以应用到React18中请求数据的官方姿势

React18不再适用的useEffect请求初始数据方式

您好,我是本际云服务器推荐网的小编小本本。首先,让我们来看一下在useEffect中请求初始数据的方式:

在其他框架中也可以应用到React18中请求数据的官方姿势

useEffect(() => {
fetch(xxx).then(data => setState(data.json()))
}, [])

然而,这种方式在React18及以后已经不再适用了。

React官方不推荐这种方式的原因

在Reddit上,Dan回答了上述问题。这是一个普遍的问题。除了React外,大部分以组件形式组织的前端框架都有类似的API:effect、didMount/didUpdate。当在初始化时请求数据的需求,框架基本上执行的都是回调函数内请求操作,并在数据返回后更新状态。但是,React很“独特”,官方不推荐这种形式书写代码(通过严格模式下useEffect执行两次放大这个问题)。React这样做,是为了项目的性能以及UX(用户体验)。

解决useEffect请求数据遇到的问题的好方式

在Meta公司内部,基于Relay驱动数据,请求数据要求使用GraphQL,所以这套架构比较难在社区普及开。但是,现在社区已经有了成熟的请求数据的方案。对于SSR,可以使用Next.js、Remix接管数据请求。对于CSR,可以使用ReactQuery、useSWR接管数据请求。上述解决方案都是十分成熟,当然如果你有其他解决方案,建议参考React新文档中下面两篇文章:使用effect同步数据、你可能不需要使用effect。注意,中文可以看的总结,记住在React新文档:不要滥用effect哦。

总结一下,React18之后不再推荐在useEffect中请求数据的方式,而推荐使用ReactQuery、useSWR等框架接管数据请求。

原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/7338.html