Hello World

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>)
                }
	 }
posted @ 2021-12-01 21:45  小小忧愁米粒大  阅读(765)  评论(0编辑  收藏  举报
瞅啥瞅,好好看书