又到了记笔记的时候了,这次是React.js的复习巩固笔记,温故知新。有空就一点点加内容。
React学习笔记:组件与入参
组件与入参
组件允许你将 UI 拆分为独立可复用的代码片段,并对每个片段进行独立构思。
组件,从概念上类似于 JavaScript
函数。它接受任意的入参(即 props
),并返回用于描述页面展示内容的 React
元素。
一、函数组件与 class 组件
1、函数组件
- 下面是一个用
JavaScript
函数编写的 React
函数组件,它接收唯一带有数据的 props
(代表属性)对象与并返回一个 React
元素
function Hello(props) {
return <h1 className= {props.classname} >Hello, {props.name}</h1>;
}
2、class 组件
- 下面是一个用
ES6
的 class
来定义的 React
组件,这个组件和上面1中的组件是等效的
class Hello extends React.Component {
render() {
return <h1 className= {props.classname} >Hello, {this.props.name}</h1>;
}
}
二、渲染组件
1、渲染组件
- 当
React
元素为用户自定义组件时,它会将 JSX
所接收的属性(attributes)以及子组件(children)转换为单个对象传递给组件,这个对象被称之为 props
。
function Hello(props) {
return <h1 className= {props.classname} >Hello, {props.name}</h1>;
}
const element = <Hello name="Ganace" classname="title" />;
ReactDOM.render(
element,
document.getElementById('root')
);
2、注意
注意:组件名称必须以大写字母开头。
React 会将以小写字母开头的组件视为原生 DOM 标签。例如,<div />
代表 HTML 的 div 标签,而 <Welcome />
则代表一个组件,并且需在作用域内使用 Welcome。
三、组合组件 & 提取组件
1、组件可以在其输出中引用其他组件
function Hello(props) {
return <h1 className= {props.classname} >Hello, {props.name}</h1>;
}
function Cpp() {
return (
<div>
<Hello name="Ganace" classname="title" />
<Hello name="Ganace" classname="title" />
<Hello name="Ganace" classname="title" />
</div>
);
}
ReactDOM.render(<Cpp />, document.getElementById('root'));
2、将组件拆分为更小的组件
- 可以把下面的项目组件拆分成
项目人
、项目说明
两个组件
function Cpp() {
return (
<div>
<div>
<h1>姓名:{props.user.name}</h1>
<h2>性别:{props.user.sex}</h2>
<h2>年龄:{props.user.age}</h2>
</div>
<div>
<h2>{props.project.title}项目说明</h2>
<a href= {props.project.url}>
<img src= {props.project.img} >
</a>
<p>{props.project.profiles}</p>
</div>
</div>
);
}
function User(props) {
return (
<div>
<h1>姓名:{props.user.name}</h1>
<h2>性别:{props.user.sex}</h2>
<h2>年龄:{props.user.age}</h2>
</div>
);
}
function Project(props) {
return (
<div>
<h2>{props.project.title} -项目说明</h2>
<a href= {props.project.url}>
<img src= {props.project.img} />
</a>
<p>{props.project.profiles}</p>
</div>
);
}
function Cpp(props) {
return (
<div>
<User user={props.user} />
<Project project={props.project} />
</div>
);
}
四、Props 入参的只读性
1、组件无论是使用函数声明还是通过 class 声明,都决不能修改自身的 props。
2、所有 React 组件都必须像纯函数一样保护它们的 props 不被更改。