• react: 三大属性之pros


    1. 简介

    • pros用于接收传入组件的属性信息
    • 一般pros只用于读取,不能修改,修改pros代码会直接报错

    2. 基本使用

    //创建组件

    class Person extends React.Component{
    
    	constructor(props){
    		//构造器是否接收props,是否传递给super,取决于:是否希望在构造器中通过this访问props
    		// console.log(props);
    		super(props)
    		console.log('constructor',this.props);
    	}
    
    	render(){
                return (<div></div>)
            }
    }
    //渲染组件到页面
    ReactDOM.render(<Person name="jerry" age={19}  sex="男"/>,document.getElementById('test1'))
    
    const p = {name:'老刘',age:18,sex:'女'}
    ReactDOM.render(<Person {...p}/>,document.getElementById('test2'))
    // 上面的..p写法将p对象展开并传入到Person组件,将对象的属性名作为key,属性值作为value传入到Person组件,效果相当于下面的写法
    ReactDOM.render(<Person name={p.name} age={p.age} sex={p.sex}/>,document.getElementById('test3'))
    

    3. 限制pros的参数类型

    通过类名.propTypes, 类名.defaultProps 给类自身添加属性限制信息

          //创建组件
            class Person extends React.Component{
    		render(){
                      return (<div></div>)
                    }
            }
    
    	//对标签属性进行类型、必要性的限制
    	Person.propTypes = {
    		name:PropTypes.string.isRequired, //限制name必传,且为字符串
    		sex:PropTypes.string,//限制sex为字符串
    		age:PropTypes.number,//限制age为数值
    		speak:PropTypes.func,//限制speak为函数
    	}
    	//指定默认标签属性值
    	Person.defaultProps = {
    		sex:'男',//sex默认值为男
    		age:18 //age默认值为18
    	}
    }
    

    4. 限制pros的参数类型的简写方式

    在类中,在属性前加上static表示给类自身添加属性,而不是给实例添加属性

    	class Person extends React.Component{
    
    		constructor(props){
    			//构造器是否接收props,是否传递给super,取决于:是否希望在构造器中通过this访问props
    			// console.log(props);
    			super(props)
    			console.log('constructor',this.props);
    		}
    
    		//对标签属性进行类型、必要性的限制
    		static propTypes = {
    			name:PropTypes.string.isRequired, //限制name必传,且为字符串
    			sex:PropTypes.string,//限制sex为字符串
    			age:PropTypes.number,//限制age为数值
    		}
    
    		//指定默认标签属性值
    		static defaultProps = {
    			sex:'男',//sex默认值为男
    			age:18 //age默认值为18
    		}
    		
    		render(){
                      return (<div></div>)
                    }
    	 }
    
    如果文章对您有所帮助,可以点一下推荐哦
  • 相关阅读:
    [开荒啦]ECS服务器初体验
    [邻接矩阵形式]无向图的建立与深度,广度遍历
    [Java 学习笔记] 泛型
    2021辽宁省大学生程序设计竞赛 C D E F G I L
    [DOJ 练习] (取余优化) 判断一个字符串不区分大小写是否回文
    [Acwing Linux基础课] Docker基本操作
    [图解] 数组模拟Trie树
    http://bbs.windows7en.com/thread3102611.html win7
    简单介绍Linux下安装Tomcat的步骤
    linux下导入导出MySQL数据库
  • 原文地址:https://www.cnblogs.com/virgosnail/p/15630909.html
Copyright © 2020-2023  润新知