创建组件的第一种方式:使用构造函数
使用构造函数来创建组件,如果要接收外界传递的数据,需要在构造函数的参数列表中使用props来接收;必须要向外return一个合法的JSX创建的虚拟DOM。
以下代码除了使用构造函数来创建组件之外还用到了ES6中的展开运算符,并且把组件抽离为了一个单独的jsx文件:
Hello.jsx代码:
function Hello(props){
return <h1>Hello,{props.name}!</h1>;
}
React05.html代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>React05</title>
<script src="https://cdn.staticfile.org/react/16.4.0/umd/react.development.js"></script>
<script src="https://cdn.staticfile.org/react-dom/16.4.0/umd/react-dom.development.js"></script>
<script src="https://cdn.staticfile.org/babel-standalone/6.26.0/babel.min.js"></script>
<script type="text/babel" src="components/Hello.jsx"></script>
</head>
<body>
<div id="app"></div>
<script type="text/babel">
const dog = {
name: '哈士奇',
age: 3,
gender: '雄'
};
ReactDOM.render(
<Hello {...dog}/>,
document.getElementById('app')
);
</script>
</body>
</html>
结果如下所示:
几点注意事项:
- 由于组件当中的props是形参,所以可以取任何合法的名字。但是为了语义化,推荐使用props作为形参的名字。
- 组件接收到的props中的属性是只读的,因此不能对其修改。
- 组件的名称首字母必须大写,否则编译器会把其识别为普通的HTML标签导致错误。
- 使用ES6的展开运算符来传递参数可以大大简化传参的工作,特别适合用于大量传递参数的情形。
明天我们将介绍ES6中class的用法😊