异步问题

异步问题

相关截图:

https://img1.sycdn.imooc.com//climg/628f33780984821619440643.jpg

问题描述:

视频中老师说setstate本身并不是异步的,是因为处理state时给人异步的假象,而异步state处理则发生在声明周期变化的时候?后半句是什么意思呀,意思是因为处理了state才让人感觉setstate是异步的?那如果是这样的话是不是因为state是异步的才让setstate感觉也是异步的?state是异步的是因为声明周期吗?如果是的话那是为什么是因为生命周期而发生异步呢?生命周期又有什么奥秘呢?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕慕子 2022-05-26 17:22:12

同学你好,可以参考如下解析理解:

1、ppt上的后半句“state处理一般发生在生命周期变化的时候",主要是指元素被插入到DOM时 ,React默认会调用ComponentDidMount生命周期方法,所以一般初始化state值后,都是在该方法中去改变state的值,更新页面展示的内容。例如:state设置初始值后,在ComponentDidMount方法中向服务器发送请求,将返回的数据赋值给state,进行内容的更新。

2、setState本身是同步执行的,但是React框架中会针对state进行批量处理,可以理解为需要等待批量处理多个state,所以是state的这个处理机制造成了一种异步的假象,才会让人感觉setState是异步的。

3、不是因为生命周期,可以参考第二条解析。

4、生命周期就是 React 框架给开发者提供的一些方法,方便开发者,通过这些生命周期,完成一些功能。

祝学习愉快~

  • 提问者 慕神0232853 #1

    所以触发state发生改变是因为插入DOM元素吗?如果不插入DOM元素就不会有生命周期的变化是吗?

    2022-05-27 13:59:31
  • 好帮手慕久久 回复 提问者 慕神0232853 #2

    解答如下:

    1、理解的不全面。触发state改变的场景有很多,不止插入dom元素一种。比如点击按钮,可以触发state改变,但是页面中并没有插入dom元素,只是修改了dom元素的内容:

    https://img1.sycdn.imooc.com//climg/62909ce20968cf7508000287.jpg

    2、生命周期函数有很多,不止ComponentDidMount一个。比如componentWillUnmount,它会在组件销毁的时候触发。此时没有插入dom的操作,而是有删除dom的操作,所以同学的理解不对。

    “state处理一般发生在生命周期变化的时候",主要是指元素被插入到DOM时 ,React默认会调用ComponentDidMount生命周期方法这句话,只是列举了修改state一种最常见的场景:

    https://img1.sycdn.imooc.com//climg/62909f8c090faed210450197.jpg

    还有其他场景可以修改state,比如点击事件中:

    https://img1.sycdn.imooc.com//climg/62909fad0940b59407360154.jpg

    同学可以跟着往下学,看看state都是在哪些代码、场景下修改的。

    2022-05-27 17:55:09
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师