三大核心属性分别是:state、props、refs
props属性
-
每个组件对象都会有props(properties的简写)属性
-
组件标签的所有属性都保存在props中
基本使用:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>1_props的基本使用</title>
</head>
<body>
<!--准备好一个容器-->
<div id="test"></div>
<!--引入react核心库-->
<script type="text/javascript" src="../js/react.development.js"></script>
<!--引入react-dom,用于支持react操作DOM-->
<script type="text/javascript" src="../js/react-dom.development.js"></script>
<!--引入babel,用于将jsx转为js-->
<script type="text/javascript" src="../js/babel.min.js"></script>
<script type="text/babel"> //<!--此处一定要写babel-->
//创建组件
class Person extends React.Component{
render(){
const {name,age,gender} = this.props
return (
<ul>
<li>姓名:{name}</li>
<li>性别:{gender}</li>
<li>年龄:{age}</li>
</ul>
)
}
}
//渲染组件到页面
ReactDOM.render(<Person name="sandy" age="18" gender="女"/>,document.getElementById('test'))
</script>
</body>
</html>
三点运算符"…"的使用:(注意,展开运算符不能展开对象)
在进行下面操作前,特别注意需要添加prop-types.js依赖包:(依赖包下载链接我放文章最下面了)
对标签属性进行类型、必要性的限制,以及设置默认值:
优化功能后的完整代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>1_props的基本使用</title>
</head>
<body>
<!--准备好一个容器-->
<div id="test1"></div>
<div id="test2"></div>
<!--引入react核心库-->
<script type="text/javascript" src="../js/react.development.js"></script>
<!--引入react-dom,用于支持react操作DOM-->
<script type="text/javascript" src="../js/react-dom.development.js"></script>
<!--引入babel,用于将jsx转为js-->
<script type="text/javascript" src="../js/babel.min.js"></script>
<!--引入prop-types,用于将对组件标签属性进行限制-->
<script type="text/javascript" src="../js/prop-types.js"></script>
<script type="text/babel"> //<!--此处一定要写babel-->
//创建组件
class Person extends React.Component{
render(){
const {name,age,gender} = this.props
return (
<ul>
<li>姓名:{name}</li>
<li>性别:{gender}</li>
<li>年龄:{age}</li>
</ul>
)
}
}
//对标签属性进行类型、必要性的限制
Person.propTypes={
name:React.PropTypes.string.isRequired, //name指定为字符串类型,而且必须得填,不能为空
gender:React.PropTypes.string,
age:React.PropTypes.number,
speak:React.PropTypes.func //限制speak为函数
}
Person.defaultProps = { //如果gender或者age值为空,就使用默认值
gender:'男',
age:18
}
//渲染组件到页面
ReactDOM.render(<Person name="sandy" age={18} gender="女" speak={speak}/>,document.getElementById('test1'))
const p={name:'小唐',age:18,gender:'女'}
ReactDOM.render(<Person {...p}/>,document.getElementById('test2'))
function speak(){
console.log('happy');
}
</script>
</body>
</html>
props的简写方式:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>2_props的简写方式</title>
</head>
<body>
<!--准备好一个容器-->
<div id="test1"></div>
<div id="test2"></div>
<!--引入react核心库-->
<script type="text/javascript" src="../js/react.development.js"></script>
<!--引入react-dom,用于支持react操作DOM-->
<script type="text/javascript" src="../js/react-dom.development.js"></script>
<!--引入babel,用于将jsx转为js-->
<script type="text/javascript" src="../js/babel.min.js"></script>
<!--引入prop-types,用于将对组件标签属性进行限制-->
<script type="text/javascript" src="../js/prop-types.js"></script>
<script type="text/babel"> //<!--此处一定要写babel-->
//创建组件
class Person extends React.Component{
//对标签属性进行类型、必要性的限制
static propTypes={
name:PropTypes.string.isRequired, //name指定为字符串类型,而且必须得填,不能为空
gender:PropTypes.string,
age:PropTypes.number,
speak:PropTypes.func, //限制speak为函数
}
static defaultProps = { //如果gender或者age值为空,就使用默认值
gender:'男',
age:18
}
render(){
const {name,age,gender} = this.props
return (
<ul>
<li>姓名:{name}</li>
<li>性别:{gender}</li>
<li>年龄:{age}</li>
</ul>
)
}
}
//渲染组件到页面
ReactDOM.render(<Person name="sandy" age={18} gender="女" speak={speak}/>,document.getElementById('test1'))
const p={name:'小唐',age:18,gender:'女'}
ReactDOM.render(<Person {...p}/>,document.getElementById('test2'))
function speak(){
console.log('happy');
}
</script>
</body>
</html>
所需相关js依赖包:
链接:https://pan.baidu.com/s/1LWFLfp0OnAZ7tpFZXBep5A
提取码:kA77
(本知识点所需js依赖包库在文件夹“03_依赖包”中的“旧版本”里面)