不可变值的问题

不可变值的问题

老师您好

代码:

    increase(){
        this.setState({
            count: this.state.count + 1
        })
    }

视频截图

https://img1.sycdn.imooc.com/climg/65e0474809151ff006380202.jpg

不可变值是不要直接修改state,我的问题是count: this.state.count + 1这里不还是直接修改了state的count值吗?这里是不是也有问题?

我问AI,说法也是这种写法不遵循不可变值的规范

https://img1.sycdn.imooc.com/climg/65e047d50930afb109220433.jpg

正在回答

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

1回答

同学你好,我认为同学理解这一块有一个偏差,不可变值是指不能直接操作state比如说直接将this.state.count++那么这句就是直接更改this中的state的count这里是不符合规范的(注意这里是指规范)那么我们要改变则需要使用到setState这个方法这样是符合规范的。

https://img1.sycdn.imooc.com/climg/65e04c7909769a9806260200.jpg

https://img1.sycdn.imooc.com/climg/65e04c5c090f381f08770082.jpg

那么对于同学的这个问题进行回答,它改变了值之后将新的值(临时的新的结果)赋值给到了count,这么做是没有问题的。

这里包含的知识点在于react中它的更新机制(规定)还有更新状态如直接使用state进行更新它不合规。


*这里要注意非要较真的话,如果说我们非要用this.state.count去进行修改是不是也能达到目的,其实如视频中老师测试的例子中发现也是可以达到目的,但会有问题,其实也是一个规范的问题,也许有一天这个规范没有了,直接可以更改了也不是没有可能。那么这里同学只要知道react的更新机制去制约了这个行为即可。

祝学员学习愉快!

  • 晓之蛇 提问者 #1

    李哥,基础类型数据的修改,我就记住不要在setState方法外面修改,就在setState方法里面修改,就可以了嘛。

    2024-02-29 17:49:45
  • 好帮手慕小李 回复 提问者 晓之蛇 #2

    对,但其实不光是基础数据类型基于不可变质的规定(理念)复杂数据类型其实也是这样的,后面老师会讲到生命周期(shouldComponentUpdate)到那时你会有一个新的理解,当前同学按照“不要在setState方法外面修改,就在setState方法里面修改”这个思路去记住即可。

    2024-02-29 17:59:14
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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