首页 男生 其他 深入浅出React和Redux

2.2.3 prop和state的对比

深入浅出React和Redux 程墨 1150 2021-04-06 02:29

  您可以在百度里搜索“深入浅出React和Redux 艾草文学(www.321553.xyz)”查找最新章节!

  

  2.2.3 prop和state的对比

  总结一下prop和state的区别:

  ·prop用于定义外部接口,state用于记录内部状态;

  ·prop的赋值在外部世界使用组件时,state的赋值在组件内部;

  ·组件不应该改变prop的值,而state存在的目的就是让组件来改变的。

  组件的state,就相当于组件的记忆,其存在意义就是被修改,每一次通过this.setState函数修改state就改变了组件的状态,然后通过渲染过程把这种变化体现出来。

  但是,组件是绝不应该去修改传入的props值的,我们设想一下,假如父组件包含多个子组件,然后把一个JavaScript对象作为props值传给这几个子组件,而某个子组件居然改变了这个对象的内部值,那么,接下来其他子组件读取这个对象会得到什么值呢?当时读取了修改过的值,但是其他子组件是每次渲染都读取这个props的值呢?还是只读一次以后就用那个最初值呢?一切皆有可能,完全不可预料。也就是说,一个子组件去修改props中的值,可能让程序陷入一团混乱之中,这就完全违背了React设计的初衷。

  还记得第1章中我们看到的那个公式吗?

  UI=render(data)

  React组件扮演的是render函数的角色,应该是一个没有副作用的纯函数。修改props的值,是一个副作用,组件应该避免。

  严格来说,React并没有办法阻止你去修改传入的props对象。所以,每个开发者就把这当做一个规矩,在编码中一定不要踩这儿红线,不然最后可能遇到不可预料的bug。 深入浅出React和Redux

目录
设置
手机
书架
书页
评论