开发者社区> 问答> 正文

React的请求应该放在哪个⽣命周期中?

展开
收起
前端问答 2019-12-01 22:23:11 865 0
1 条回答
写回答
取消 提交回答
  • 前端问答小助手

    React的异步请求到底应该放在哪个⽣命周期⾥,有⼈认为在componentWillMount中可以提前进⾏异步请求,避免⽩屏,其实这个观点是有问题的。

    由于JavaScript中异步事件的性质,当您启动API调⽤时,浏览器会在此期间返回执⾏其他⼯作。当React渲染⼀个组件时,它不会等待componentWillMount完成任何事情 - React继续前进并继续render,没有办法“暂停”渲染以等待数据到达。

    ⽽且在componentWillMount请求会有⼀系列潜在的问题,⾸先,在服务器渲染时,如果在componentWillMount⾥获取数据,fetch data会执⾏两次,⼀次在服务端⼀次在客户端,这造成了多余的请求,其次,在React 16进⾏React Fiber重写后, componentWillMount可能在⼀次渲染中多次调⽤。

    ⽬前官⽅推荐的异步请求是在componentDidmount中进⾏。

    如果有特殊需求需要提前请求,也可以在特殊情况下在constructor中请求:

    react 17之后 componentWillMount 会被废弃,仅仅保留 UNSAFE_componentWillMount

    2019-12-01 22:47:44
    赞同 1 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
利用编译将 Vue 组件转成 React 组件 立即下载
React Native 全量化实践 立即下载
React在大型后台管理项目中的工程实践 立即下载