【React】react学习笔记04-React组件对象的三大属性-属性值【props】

本文详细介绍了React中组件如何接收并使用上层组件传递的参数,包括props的基本使用、默认值设定、props类型约束及扩展运算符的应用。

定义

用于接收上层组件传入的参数的对象!

DEMO

这里是一个简单的传值到组件内部的demo:

<!DOCTYPE html><html>
<head>
    <meta charset="utf-8" />
    <title>React Tutorial</title>

</head>
<body>
    <!--react基础库-->
   <script src="https://cdn.bootcss.com/react/16.8.6/umd/react.development.js"></script>
    <script src="https://cdn.bootcss.com/react-dom/16.8.6/umd/react-dom.development.js"></script>
    <script src="https://cdn.bootcss.com/babel-standalone/6.26.0/babel.js"></script>

    <div id="content"></div>

    <script type="text/babel">
        //定义组件
        class ComponentA extends React.Component{
            //构造函数,在初始化组件的时候会执行
              constructor(props){
                  super(props);
                  //state的值是从props中获取的上层对象传入的参数
                  this.state={
                      name:this.props.name,
                      age:this.props.age
                  }
              }
            //render会进行页面的渲染,当state中数据更新或者发送ajax等事件被监听到都会触发render的刷新
              render(){
                  //从state中取值
                  const name = this.state.name;
                  const age = this.state.age;
                  return(
                      <div>
                          <p>名字:{name}</p>
                          <p>年龄:{age}</p>
                      </div>
                  );
              }
        }
//传入参数name以及age

        ReactDOM.render(<ComponentA  name={'aaa'} age={20}/>,document.getElementById("content"));


    </script>


</body>
</html>

页面展现效果

调用组件时传入的参数name以及age在组件内部初始化时被获取到值,并且在render时被state渲染到页面上:

扩展

1、默认值:

props中的属性是可以设置默认值的:

<!DOCTYPE html><html>
<head>
    <meta charset="utf-8" />
    <title>React Tutorial</title>

</head>
<body>
   <script src="https://cdn.bootcss.com/react/16.8.6/umd/react.development.js"></script>
    <script src="https://cdn.bootcss.com/react-dom/16.8.6/umd/react-dom.development.js"></script>
    <script src="https://cdn.bootcss.com/babel-standalone/6.26.0/babel.js"></script>

    <div id="content"></div>

    <script type="text/babel">
        //定义组件
        class ComponentA extends React.Component{
            //构造函数,在初始化组件的时候会执行
              constructor(props){
                  super(props);
                  //state的值是从props中获取的上层对象传入的参数
                  this.state={
                      name:this.props.name,
                      age:this.props.age
                  }
              }
            //render会进行页面的渲染,当state中数据更新或者发送ajax等事件被监听到都会触发render的刷新
              render(){
                  //从state中取值
                  const name = this.state.name;
                  const age = this.state.age;
                  return(
                      <div>
                          <p>名字:{name}</p>
                          <p>年龄:{age}</p>
                      </div>
                  );
              }
        }
        //指定默认值
        ComponentA.defaultProps = {
            name:'Jerry',
            age:30

        }
        //这里我没有传任何参数
        ReactDOM.render(<ComponentA />,document.getElementById("content"));


    </script>


</body>
</html>

页面显示效果:

名字:Jerry

年龄:30

2、约束:

给传入的props添加约束,规范数据类型与添加约束:

官网实例:使用 PropTypes 进行类型检查 – React

由于博主版本不对,所以测试编译报错,所以了解下就好,使用脚手架搭建的React环境不会存在版本问题。

3、扩展运算符【...】

 render(){
                  //从state中取值
                  const Student = { name : 'Rose' , level: 100};
                  const Student2= {...Student};

                  const array = [1,2,3,4,5];
                  const array2 = [0, ...array,6]

                  return(
                      <div>
                          <p>名字:{Student2.name}</p>
                          <p>array2:{array2}</p>
                      </div>
                  );
              }

渲染结果:

名字:Rose

array2:0123456

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值