上一章ReactJS实战教程请查看:React组件API用法全解
在ReactJS中,每个组件创建过程都涉及各种生命周期方法,这些生命周期方法被称为组件的生命周期。这些生命周期方法不是很复杂,并且在组件生命周期的不同时间点调用。组件的生命周期分为四个阶段。它们是:
- 初始阶段
- 安装阶段
- 更新阶段
- 卸载阶段
1. 初始阶段它是ReactJS组件生命周期的起始阶段。在这里,组件开始了它通往DOM的旅程。在此阶段,组件包含默认的道具和初始状态,这些默认属性是在组件的构造函数中完成的。初始阶段只出现一次,由以下方法组成。
- getDefaultProps():它用于指定this.props的默认值,它是在创建组件或将来自父组件的任何道具传递到组件之前调用的。
- getInitialState():它用于指定this.state的默认值,它是在组件创建之前调用的。
- componentWillMount():这是在将组件呈现到DOM之前立即调用的。在这种情况下,当你在这个方法中调用setState()时,组件将不会重新呈现。
- componentDidMount():在呈现组件并将其放置在DOM上之后立即调用。现在,你可以执行任何DOM查询操作。
- render():每个组件都定义了此方法,它负责返回一个根HTML节点元素。如果不希望呈现任何内容,可以返回null或false值。
- componentWillRecieveProps():当组件接收到新道具时调用它,如果你想更新状态以响应props更改,你应该比较这一点,使用this.setState()方法执行状态转换。
- shouldComponentUpdate():当组件决定对DOM的任何更改/更新时,将调用它。它允许你控制组件更新自身的行为。如果此方法返回true,则组件将更新。否则,组件将跳过更新。
- componentWillUpdate():它是在组件更新之前调用的。在这里,你不能通过调用this.setState()方法来更改组件状态。如果shouldComponentUpdate()返回false,则不会调用它。
- render():调用它来检查this.state和this.props并返回以下类型之一:React元素、数组和片段fragment、布尔值或null、字符串和数字。如果shouldComponentUpdate()返回false,将再次调用render()中的代码,以确保组件正确地显示自己。
- componentDidUpdate():在组件更新发生后立即调用它。在此方法中,你可以将任何代码放入其中,以便在更新发生时执行。初始呈现不调用此方法。
- componentWillUnmount():此方法在组件被永久销毁和卸载之前立即调用。它执行任何必要的清理相关任务,如使计时器失效、事件监听器、取消网络请求或清理DOM元素。如果组件实例被卸载,则无法再次挂载它。
import React, { Component } from 'react';
class App extends React.Component {
constructor(props) {
super(props);
this.state = {hello: "srcmini"};
this.changeState = this.changeState.bind(this)
}
render() {
return (
<
div>
<
h1>ReactJS组件生命周期<
/h1>
<
h3>Hello {this.state.hello}<
/h3>
<
button onClick = {this.changeState}>点击<
/button>
<
/div>
);
}
componentWillMount() {
console.log('组件将挂载!')
}
componentDidMount() {
console.log('组件已经挂载!')
}
changeState(){
this.setState({hello:"这是reactjs实战教程."});
}
componentWillReceiveProps(newProps) {
console.log('组件将收到Props!')
}
shouldComponentUpdate(newProps, newState) {
return true;
}
componentWillUpdate(nextProps, nextState) {
console.log('组件将更新!');
}
componentDidUpdate(prevProps, prevState) {
console.log('组件已经更新!')
}
componentWillUnmount() {
console.log('组件将卸载!')
}
}
export default App;
推荐阅读
- React受控组件和非受控组件之间的区别 – ReactJS实战教程
- React组件API用法全解 – ReactJS实战教程
- React构造函数constructor用法详解 – ReactJS实战教程
- React状态state和属性props之间的区别 – ReactJS实战教程
- React属性验证propTypes用法介绍 – ReactJS实战教程
- React属性props用法详解 – ReactJS实战教程
- React状态state用法详解 – ReactJS实战教程
- React组件Component用法解析 – ReactJS实战教程
- React JavaScript扩展JSX用法详解 – ReactJS实战教程