逆战1913——React——Props

Props

props:指一个组件被重复使用但是显示的内容却不同
组件:props传参
props是组件对外的接口,使用peops就可以向组件内部进行数据传递。
注意 :props对于使用它的组件来说,是只读的,一旦赋值就不能被修改。也就是说peops的值是不可以改变的,只能在渲染的时候传入,无法动态赋值。
组件无论是使用函数声明还是通过class声明,都绝不能修改自身的peops
当一个组件被注入peops值的时候,属性值来源于它的父级元素,从父级到子集元素。
eg:

function() Odd(props){
	return <h1>{props.name}</h1>
}
var element=<Odd name="我是传输的数据" />
ReactDOM.render(
	element,
	document.getElementById('demodiv')
);

组件:peops传入多个参数
在参数较多的时候可以把Object类型进行传递
eg:

<script type="text/babel">
	function Odd(props){
		return <div>
			<p>{props.name}</p>
			<p>{props.age}</p>
			<p>{props.sex}</p>
			</div>
}
var obj={name:"老王",age:18,sex:"男"}//使用扩展运算符传入对象数据
var element=<Odd {...obj} />
ReactDOM.render(
	//调用
	element,
	document.getElementById('demodiv')
);
</script>

组件:props默认值
用||来进行判断(在这里是需要引用react 15x的依赖包)
eg:

function() Odd(props){
//设置props的默认值 用||来进行默认值的设置
	props.text=props.text||"我是默认值"
	return <div>{props.text}</div>
}

ReactDOM.render(
	<Odd />,
	document.getElementById('demodiv')
);

组件:props默认值defaultProps
有些时候,我们需要设置一些默认属性,在父级组件未向子级组件传递数据的时候,填充默认值。
eg:

<script type="text/babel">
	function Odd(props){
		return <div>
			<p>{props.name}</p>
			<p>{props.age}</p>
			</div>
}
//设置默认值
Odd.defaultProps={
	name:"我是name的默认值",
	age:"我是age的默认值"
};
ReactDOM.render(
	<Odd />,
	document.getElementById('demodiv')
);
</script>


Props验证
新版的验证方式需要注意引用prop-types库
eg:

//props验证
//1.引用验证js包
//2.设置验证
	Odd.propTypes={
//验证必须是字符串,isRequired不能为空
//注意字母大小写
		name:PropTypes.string.isRequired,
	age:PropTypes.number.isRequired
	}

组件——class类定义方式:传入参数
使用this.props.xx接收值
eg:

<script type="text/babel">
class Odd extends React.Components{
	render(){
		return (<div>
					<p>{props.name}</p>
					<p>{props.age}</p>
				</div>)
	}
}

ReactDOM.render(
	<Odd name="我是name" age="我是age" />,
	document.getElementById('demodiv')
);
</script>

defaultProps:设置默认属性
类方式创建使用defaultProps进行默认值设置两种方式
eg:

class Odd extends React.Component{
//方式1设置默认值
	static defaultProps={name:"name默认值"}
	render(){
		return<div>
				<p>{this.props.name}</p>
				<p>{this.props.age}</p>
			</div>}
}
//方式2设置默认值
	Odd.defaultProps={
		name:"name默认值"
	};
ReactDOM.render(
<Odd age="我是age" />,
document.getElementById('demodiv')
)
class Odd extends React.Component{
	render(){
		return<div>'
				<p>{this.props.name}</p>
				<p>{this.props.age}</p>
			</div>}
}
Odd.propsTypes={
	name:PropsTypes.string
}
var namedata=18
ReactDOM.render(
<Odd name={namedata} />,
document.getElementById("demodiv")

以上纯属个人理解,有误请指出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值