<!DOCTYPE html>
<html>
<head>
<meat charset="UTF-8">
<title>2_props限制</title>
</head>
<body>
<!-- 准备好一个容器 -->
<div id="test1"></div>
<div id="test2"></div>
<div id="test3"></div>
<!-- 核心库 -->
<script type="text/javascript" src="../js/react.development.js"></script>
<!-- react-dom,操作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>
<!-- 此处一定要写babel -->
<script type="text/babel">
//1.创建组件
class Person extends React.Component{
render(){
console.log(this);
const {name,age,sex} = this.props
return(
<ul>
<li>姓名:{name}</li>
<li>性别:{sex}</li>
<li>年龄:{age+1}</li>
</ul>
)
}
}
//对标签属性进行类型、必须性的限制
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
}
//2.渲染组件到页面
ReactDOM.render(<Person name='Tom44' age={19} sex="男" speak={speak}/>, document.getElementById('test1'));
ReactDOM.render(<Person name="lucy" age={13} />, document.getElementById('test2'));
const p={name:'Toms',age:18,sex:'女'}
console.log('@',...p)
//ReactDOM.render(<Person name={p.name} age={p.age} sex={p.sex} />, document.getElementById('test3'));
ReactDOM.render(<Person {...p} />, document.getElementById('test3'));
function speak(){
console.log('我说话了')
}
</script>
</body>
</html>