一. props 概念
- 每个组件对象都会有
props
(properties的简写)属性 - 组件标签的所有属性都保存在
props
中 - 通过标签属性从组件外向组件内传递变化的数据
二. props 作用
- 注意:组件内部不要修改
props
数据 - 接收组件外部传递过来的数据
- 内部读取某个属性值
三. props 的使用
1. props的基本使用
class Person extends React.Component {
render() {
const { name, sex, age } = this.props
return (
<ul>
<li>姓名:{name}</li>
<li>性别:{sex}</li>
<li>年龄:{age}</li>
</ul>
)
}
}
ReactDOM.render(<Person name="tom" sex="男" age={18} />, document.getElementById("root"))
let p = { name: "tom", sex: "男", age: 18 }
ReactDOM.render(<Person {...p} />, document.getElementById("root"))
2. 对props进行限制
class Person extends React.Component {
render() {
const { name, sex, age } = this.props
return (
<ul>
<li>姓名:{name}</li>
<li>性别:{sex}</li>
<li>年龄:{age}</li>
</ul>
)
}
}
Person.propTypes = {
name: PropTypes.string.isRequired,
sex: PropTypes.string,
age: PropTypes.number
}
Person.defaultProps = {
sex: "未填写",
age: 18
}
ReactDOM.render(<Person name="tom" />, document.getElementById("root"))
let p = { name: "tom", sex: "男", age: 18 }
ReactDOM.render(<Person {...p} />, document.getElementById("root"))
3. props的简写方式
class Person extends React.Component {
constructor(props) {
console.log(props)
super(props)
console.log(this.props)
}
static propTypes = {
name: PropTypes.string.isRequired,
sex: PropTypes.string,
age: PropTypes.number
}
static defaultProps = {
sex: "未填写",
age: 18
}
render() {
const { name, sex, age } = this.props
return (
<ul>
<li>姓名:{name}</li>
<li>性别:{sex}</li>
<li>年龄:{age}</li>
</ul>
)
}
}
ReactDOM.render(<Person name="tom" />, document.getElementById("root"))
let p = { name: "tom", sex: "男", age: 18 }
ReactDOM.render(<Person {...p} />, document.getElementById("root"))
4. 函数式组件使用props
function Person(props) {
return (
<ul>
<li>姓名:{props.name}</li>
<li>性别:{props.sex}</li>
<li>年龄:{props.age}</li>
</ul>
)
}
Person.propTypes = {
name: PropTypes.string.isRequired,
sex: PropTypes.string,
age: PropTypes.number
}
Person.defaultProps = {
sex: "未填写",
age: 18
}
ReactDOM.render(<Person name="tom" />, document.getElementById("root"))
let p = { name: "tom", sex: "男", age: 18 }
ReactDOM.render(<Person {...p} />, document.getElementById("root"))