本文摘自PHP中文网,作者青灯夜游,侵删。
区别:props是传递给组件的(类似于函数的形参),而state是在组件内部被组件自己管理的(类似于在一个函数内声明的变量)。state是组件自己管理数据,控制自己的状态,可变;props是外部传入的数据参数,不可变。
本教程操作环境:windows10系统、react16,本文适用于所有品牌的电脑。
相关推荐:《React视频教程》
props
React的核心思想就是组件化思想,页面会被切分成一些独立的、可复用的组件。
组件从概念上看就是一个函数,可以接受一个参数作为输入值,这个参数就是props
,所以可以把props
理解为从外部传入组件内部的数据。由于React是单向数据流,所以props
基本上也就是从服父级组件向子组件传递的数据。
用法
假设我们现在需要实现一个列表,根据React组件化思想,我们可以把列表中的行当做一个组件,也就是有这样两个组件:<ItemList/>
和<Item/>
。
先看看<ItemList/>
1 2 3 4 5 6 7 8 9 |
|
列表的数据我们就暂时先假设是放在一个data
变量中,然后通过map
函数返回一个每一项都是<Item item='数据'/>
的数组,也就是说这里其实包含了data.length
个<Item/>
组件,数据通过在组件上自定义一个参数传递。当然,这里想传递几个自定义参数都可以。
在<Item />
中是这样的:
1 2 3 4 5 6 7 |
|
在render
函数中可以看出,组件内部是使用this.props
来获取传递到该组件的所有数据,它是一个对象,包含了所有你对这个组件的配置,现在只包含了一个item
属性,所以通过this.props.item
来获取即可。
只读性
props
经常被用作渲染组件和初始化状态,当一个组件被实例化之后,它的props
是只读的,不可改变的。如果props
在渲染过程中可以被改变,会导致这个组件显示的形态变得不可预测。只有通过父组件重新渲染的方式才可以把新的props
传入组件中。
默认参数
在组件中,我们最好为props
中的参数设置一个defaultProps
,并且制定它的类型。比如,这样:
1 2 3 4 5 6 7 |
|
关于propTypes
,可以声明为以下几种类型:
1 2 3 4 5 6 7 |
|
总结
props
是一个从外部传进组件的参数,主要作为就是从父组件向子组件传递数据,它具有可读性和不变性,只能通过外部组件主动传入新的props
来重新渲染子组件,否则子组件的props
以及展现形式不会改变。
state
state
是什么呢?
1 |
|
一个组件的显示形态可以由数据状态和外部参数所决定,外部参数也就是props
,而数据状态就是state
用法
相关阅读 >>
angular与angularjs、React和vue的简单对比
更多相关阅读请进入《React》频道 >>
Vue.js 设计与实现 基于Vue.js 3 深入解析Vue.js 设计细节
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者