# day_02_todolist
**Repository Path**: zhang-rongyan/day_03_todolist
## Basic Information
- **Project Name**: day_02_todolist
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-11-22
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## React组件通信
#### **父传子**
父组件通过props向子组件传递数据。
**子组件**
```
import React from 'react';
impot ProTypes from 'prop-types';
export default functiom Child({ name }){
return
Hello,{name}
;
}
Child.propTypes = {
name:PropTypes.string.isRequired,
};
```
父组件
```javascript
impor React, {Component} from 'react';
impot Child from './Child';
class Parent extends Component{
render(){
return(
)
}
}
export default Parent;
```
#### 子传父
1、利用回调函数
2、利用自定义事件机制
#### 兄弟组件通信
利用二者共同父组件进行通信,但是采用组件间共同的父级来进行中转,会增加子组件和父组件之间的耦合度,如果组件层次较深的话,找到二者公共的父组件不是一件容易的事。
安装events依赖
```javascript
npm install events
```
新建events.js文件并向外提供一个事件对象,供通信时使用;
```javascript
import { EventEmitter } from "events";
export default new EventEmitter();
```
## 组建的生命周期
当组件第一次被渲染到DOM中的时候,这在React中被称为“挂载(mount)".
同时,当DOM中组件被删除的时候,这在React中被称为”卸载(unmount)“。
我们可以为class组件声明一些特殊的方法,当组件挂载或卸载时就会去执行这些方法叫做”生命周期方法“。
**React 组件生命周期**
- **组件将要挂载时触发的函数:componentWillMount**
- **组件挂载完成时触发的函数:componentDidMount**
- **是否要更新数据时触发的函数:shouldComponentUpdate**
- **将要更新数据时触发的函数:componentWillUpdate**
- **数据更新完成时触发的函数:componentDidUpdate**
- **组件将要销毁时触发的函数:componentWillUnmount**
- **父组件中改变了props传值时触发的函数:componentWillReceiveProps**