props

作者: 陈大事_code | 来源:发表于2020-03-09 10:17 被阅读0次
  • 每个组件都存在Props属性,函数声明式组件(props),类声明式组件(this.props)
  • 组件标签中所有的属性都存在props中,通过对象方式获取(this.props.id),且只读
  • 传参的类型,可以是对象,也可以是函数
  • 可对传入的props进行类型以及默认值的限制
class Person extends React.Component {

   constructor(props) {
     super(props);
     console.log(props); //查看所有属性
   }

   render() {
     return (
       <ul>
         // 获取props值的方式
         <li>姓名: {this.props.name}</li>
         <li>性别: {this.props.sex}</li>
         <li>年龄: {this.props.age}</li>
       </ul>
     );
   }
 }

 Person.propTypes = { // 类型限制
  name: React.PropTypes.string.isRequired,
  sex: React.PropTypes.string.isRequired,
  age: React.PropTypes.number.isRequired
 };

 Person.defaultProps = { // 默认值限制
   sex: '男',
   age: 18
 };

上面这种方式是在类声明之外,进行限制,这是一种方式(看起来有点脱节),

当然也可以在内部声明,比如:

class Person extends React.Component {

    constructor(props) {
      super(props);
      console.log(props); //查看所有属性
    }

    render() {
      return (
        <ul>
          // 获取props值的方式
          <li>姓名: {this.props.name}</li>
          <li>性别: {this.props.sex}</li>
          <li>年龄: {this.props.age}</li>
        </ul>
      );
    }
    
     static.propTypes = { // 类型限制
       name: React.PropTypes.string.isRequired,
       sex: React.PropTypes.string.isRequired,
       age: React.PropTypes.number.isRequired
      };

     static.defaultProps = { // 默认值限制
        sex: '男',
        age: 18
      };
  }
  • 在组件标签中,可通过扩展运算符的方式来传递props
// person = {name: 'cc', sex: '男', age: 24}
<Person {...person} />

参考

相关文章

网友评论

      本文标题:props

      本文链接:https://www.haomeiwen.com/subject/ybkudhtx.html