React开发之——组件的props(11)
一 概述
- props概述
- 组件的props示例
- 组件的props特点
二 props概述
- 组件是封闭的,要接收外部数据应该通过props 来实现
- props的作用:接收传递给组件的数据
- 传递数据:给组件标签添加属性
- 接收数据:函数组件通过参数props接收数据,类组件通过 this.props 接收数据
三 组件的props示例
3.1 传递数据
1 | <Hello name="jack" age={19}/> |
说明:
- 通过name,age属性传值
3.2 接受数据
通过方法接受数据
代码
1 | const Hello=(props)=>{ |
说明:
- 方法通过props接受数据
- 通过props.属性名赋值
通过类接受数据
代码:
1 | class Hello extends React.Component{ |
说明:
- 类中通过this.props接受数据
- 通过this.props.属性名赋值
四 组件的props特点
4.1 props传递数据的类型
可以给组件传递任意类型的数据,如
- 数组:
<Hello colors={['red','green','blue']} />
- 函数:
<Hello fn={()=>console.log('这是函数')} />
- 元素:
<Hello tag={<p>这是P标签</p>} />
4.2 props 是只读的对象,只能读取属性的值,无法修改对象
当给name属性重新赋值时,会出现错误
1 | this.props.name='rose' |
错误信息如下
1 | Uncaught TypeError: Cannot assign to read only property 'name' of object '#<Object>' |
4.3 使用类组件时,如果写了构造函数,应该将 props 传递给 super(),否则,无法在构造函数中获取到 props!
1-未将props传递给super时
1 | class Hello extends React.Component { |
说明:
- constructor构造方法中的this.props为undefined
- render方法中的this.props已赋值
2-将props传递给super时
1 | class Hello extends React.Component { |
说明:
- constructor构造方法中的this.props和render方法中的this.props均已赋值