react props

1.props对象存储在组件实例对象中(this)

理解:
-每个组件对象都会有props(properties)属性
-组件标签的所有属性都保存在props中
作用:
-通过标签属性从组件外向组件内传递变化的数据
-注意:组件内部不要修改props(只读的)

2.三个例子:
2.1 props的基本使用

 <div id="test"></div>
  <div id="test2"></div>
  <div id="test3"></div>
  <script type="text/javascript" src="../js/react.development.js"></script>
  <script type="text/javascript" src="../js/react-dom.development.js"></script>
  <script type="text/javascript" src="../js/babel.min.js"></script>
  <script type="text/babel">
  class Person extends React.Component{

    render(){
      console.log(this);
      const {name,sex,age} = this.props //解构
      return(
        <ul>
        <li>姓名:{name}</li>  
        <li>性别:{sex}</li>  
        <li>年龄:{Number(age) + 1}</li>  
        </ul>
      )
    }
  }
  const info = {name:'Tom' , age:18 , sex:'男'}
  ReactDOM.render(<Person{...info}/> , document.getElementById('test'))//在组件传的key-value值保存在类的实例对象this的props对象里
  ReactDOM.render(<Person name = 'Jerry' age = '19' sex = '男'/> , document.getElementById('test2'))//在组件传的key-value值保存在类的实例对象this的props对象里
  ReactDOM.render(<Person name = 'Mali' age = '18' sex = '女'/> , document.getElementById('test3'))//在组件传的key-value值保存在类的实例对象this的props对象里
  
  </script>

2.2 props的数据类型限制

 
  <script type="text/babel">
  class Person extends React.Component{
  
 
    render(){
   /* 
    对传入的值进行限制:propType(属性类型)
      -名字为必填,且类型是字符串
      -年龄是数值型,默认值18 default
      -性别为字符串,默认值 男
    */
   //对标签属性进行类型、必要性的限制

     Person.propTypes = {
      name:PropTypes.string.isRequired,
      age:PropTypes.number,
      sex:PropTypes.string,
      speak:PropTypes.func,//限制speak是函数

     }
     //指定标签默认值
    Person.defaultProps = {
      age:18,
      sex:'男'
    }
      console.log(this);
      const {name,sex,age} = this.props //解构
      return(
        <ul>
        <li>姓名:{name}</li>  
        <li>性别:{sex}</li>  
        <li>年龄:{age}</li>  
        </ul>
      )
    }


  }
  const info = {name:'Tom' , age:34 , sex:'男'}
  ReactDOM.render(<Person{...info}/> , document.getElementById('test'))//在组件传的key-value值保存在类的实例对象this的props对象里
  ReactDOM.render(<Person name = 'Jerry'  sex = '男' speak = {speak}/> , document.getElementById('test2'))//在组件传的key-value值保存在类的实例对象this的props对象里
  ReactDOM.render(<Person name = 'Mali' age = {45} sex = '女'/> , document.getElementById('test3'))//在组件传的key-value值保存在类的实例对象this的props对象里
  
  </script>

2.3 props的简写
(加static是把该约束加在类组件本身,而不是加在实例上)

  <script type="text/babel">
  class Person extends React.Component{
    //加static 给自身增加属性,而不是给实例
     /* 
    对传入的值进行限制:propType(属性类型)
      -名字为必填,且类型是字符串
      -年龄是数值型,默认值18 default
      -性别为字符串,默认值 男
    */
   //对标签属性进行类型、必要性的限制

   static propTypes = {
      name:PropTypes.string.isRequired,
      age:PropTypes.number,
      sex:PropTypes.string,
      speak:PropTypes.func,//限制speak是函数

     }
     //指定标签默认值
   static defaultProps = {
      age:18,
      sex:'男'
    }
 
    render(){
      console.log(this);
      const {name,sex,age} = this.props //解构
      return(
        <ul>
        <li>姓名:{name}</li>  
        <li>性别:{sex}</li>  
        <li>年龄:{age}</li>  
        </ul>
      )
    }


  }
  const info = {name:'Tom' , age:34 , sex:'男'}
  ReactDOM.render(<Person{...info}/> , document.getElementById('test'))//在组件传的key-value值保存在类的实例对象this的props对象里
  ReactDOM.render(<Person name = 'Jerry'  sex = '男' /> , document.getElementById('test2'))//在组件传的key-value值保存在类的实例对象this的props对象里
  ReactDOM.render(<Person name = 'Mali' age = {45} sex = '女'/> , document.getElementById('test3'))//在组件传的key-value值保存在类的实例对象this的props对象里
  
  </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值