请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于不可变值

老师好,不可变值您直接push数组,渲染数组的子组件也可以添加item,这是因为:

1:state数组直接push,也可以被修改。

2:子组件没有用scu,每次父组件render子组件也会被render执行。

但如果用scu,就无法更新子组件dom,因为scu需要新旧数据对比,此时的scu里面的数组,都是最新数据,因为是直接push的同步修改。setstate的意义在于:由react去修改数据,这样react会有新旧数据,让scu去对比判断,如果返回true就覆盖旧数据,进而render子组件,不然就中止数据修改和子组件的render

我这样理解对吗?

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

1回答

双越 2023-02-02 17:34:14

看到你还几次问“这样理解对吗”一类的问题。这让我有些困惑。

第一,如果你是分享学习笔记,我很欢迎,很好。

第二,如果你在具体的地方有疑问,那提出来,我也会及时回复你。

但你这个“这样理解对吗”就类似于:学生给老师写了 200 个字,让老师找里面有没有错别字。


所以,我希望你以后的问题,就是一个具体的问题。

PS:每日回复问题较多,所以不得不如此考虑,还请你体谅一下~

0 回复 有任何疑惑可以回复我~
  • 提问者 袁门弟子 #1
    简单说,
    1:子组件没有用scu的情况下,父组件不用setSet,直接通过push修改了传递进子组件的list数组,子组件也会进行刷新。这个问题就是在于react父组件render,子组件默认也会render,而子组件拿到的是父组件push生成的新数组。
    2: push也可以修改state状态,并更新到页面,但是setState的意义之一在于给子组件的scu提供新旧数据对比(如果不用setState,直接push数组就是同步修改,就没有新旧数据了)。
    我是这样理解的,我是想问问对不对,老师就说1和2这俩对或不对就可以了,不对我自己再研究一下。
    回复 有任何疑惑可以回复我~ 2023-02-02 21:07:53
  • 双越 回复 提问者 袁门弟子 #2
    对的。
    回复 有任何疑惑可以回复我~ 2023-02-03 09:21:55
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信