关于严格模式的问题

关于严格模式的问题

老师您好,


问题一:在严格模式中(使用<React.StrictMode>),useEffect中的逻辑会执行两次,return中的代码要去清理第一次执行的定时器、事件、DOM操作等,是这样对吧?

问题二:如果是在严格模式中(不使用<React.StrictMode>),useEffect中的逻辑只会执行一次,那岂不是return中的逻辑就将第一次执行的逻辑给清除掉了?例如下面的代码:背景色变红,return执行又把背景色还原了,我理解DOM操作就没有作用了吗?(当然实际情况还是变红了的)


https://img1.sycdn.imooc.com/climg/6576c6d409f005d407370281.jpg

问题三:打包上线后的生产环境就没有严格模式了,对吗?

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

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

1回答
好帮手慕小李 2023-12-11 17:02:33

同学你好,解答如下:

1、首先要了解StrictMode它是用来显示程序中有哪些问题的工具,它本身是不会渲染任何UI。而是为了触发警告而存在的,仅仅是辅助开发的作用而已。但如果涉及到定时器、如同学提到的事件,有的时候需要remove掉绑定的事件包括操作DOM,那么这些是要做处理的。

2、DOM操作需要清理仅限于在严格模式下,在非严格模式下就不需要进行清理操作了。

3、生产环境是没有严格模式的。

祝学习愉快!

  • 老师我理解像对window对象的DOM进行操作(在useEffect中),还是可能需要做清理操作的

    而对自身所在组件的范围内的DOM结构,比如这里的div,对它做操作应该可以不去做清理操作,这样应该没有问题罢。

    2024-04-02 17:42:17
  • 我认为你的理解是ok的。

    2024-04-02 17:46:09
  • 😁😁😁

    2024-04-02 17:49:07
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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