• 技术文章 >web前端 >前端问答

    react http请求放在哪

    藏色散人藏色散人2023-01-05 09:34:07原创100

    react http请求应该放在componentDidMount中去操作,这是对于异步请求来说的;而对于同步的状态改变,react网络请求可以放在componentWillMount中,一般用的比较少。

    本教程操作环境:Windows10系统、react18.0.0版、Dell G3电脑。

    react http请求放在哪?React网络请求到底该放在哪个生命周期中?

    总的来说,对于异步请求,最好放在componentDidMount中去操作,对于同步的状态改变,可以放在componentWillMount中,一般用的比较少。

    如果认为在componentWillMount里发起请求能提早获得结果,这种想法其实是错误的,通常componentWillMount比componentDidMount早不了多少微秒,网络上任何一点延迟,这一点差异都可忽略不计。

    看看react的生命周期:

    constructor() ----> componentWillMount() ----> render() ----> componentDidMount()

    上面这些方法的调用是有次序的,由上而下依次调用。

    constructor被调用是在组件准备要挂载的最开始,此时组件尚未挂载到网页上。

    componentWillMount方法的调用在constructor之后,在render之前,在这方法里的代码调用setState方法不会触发重新render,所以它一般不会用来作加载数据之用。

    componentDidMount方法中的代码,是在组件已经完全挂载到网页上才会调用被执行,所以可以保证数据的加载。此外,在这方法中调用setState方法,会触发重新渲染。所以,官方设计这个方法就是用来加载外部数据用的,或处理其他的副作用代码。与组件上的数据无关的加载,也可以在constructor里做,但constructor是做组件state初绐化工作,并不是做加载数据这工作的,constructor里也不能setState,还有加载的时间太长或者出错,页面就无法加载出来。所以有副作用的代码都会集中在componentDidMount方法里。

    总结:

    1.跟服务器端渲染(同构)有关系,如果在componentWillMount里面获取数据,fetch data会执行两次,一次在服务器端一次在客户端。在componentDidMount中可以解决这个问题,componentWillMount同样也会render两次。

    2.在componentWillMount中fetch data,数据一定在render后才能到达,如果你忘记了设置初始状态,用户体验不好。

    3.react16.0以后,componentWillMount可能会被执行多次。

    推荐学习:《react视频教程

    以上就是react http请求放在哪的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:http React
    上一篇:react怎么让子组件不渲染 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • react怎么修改对象的属性值• react项目怎么改标题• react启动无法访问怎么办• react组件样式引用失败怎么办
    1/1

    PHP中文网