constructor()javascript
加载的时候调用一次,能够初始化state
getDefaultProps()html
设置默认的props,也能够用dufaultProps设置组件的默认属性。
getInitialState()java
初始化state,能够直接在constructor中定义this.state
componentWillMount()react
组件加载时只调用,之后组件更新不调用,整个生命周期只调用一次,此时能够修改state
render()算法
react最重要的步骤,建立虚拟dom,进行diff算法,更新dom树都在此进行
componentDidMount()dom
组件渲染以后调用,只调用一次
componentWillReceivePorps(nextProps)函数
组件加载时不调用,组件接受新的props时调用
shouldComponentUpdate(nextProps, nextState)this
组件接收到新的props或者state时调用,return true就会更新dom(使用diff算法更新),return false能阻止更新(不调用render)
componentWillUpdata(nextProps, nextState)spa
组件加载时不调用,只有在组件将要更新时才调用,此时能够修改state
render()code
react最重要的步骤,建立虚拟dom,进行diff算法,更新dom树都在此进行
componentDidUpdate()
组件加载时不调用,组件更新完成后调用
componentWillUnmount()
组件渲染以后调用,只调用一次
import React, { Component } from 'react' export default class OldReactComponent extends Component { constructor(props) { super(props) // getDefaultProps:接收初始props // getInitialState:初始化state } state = { } componentWillMount() { // 组件挂载前触发 } render() { return ( <h2>Old React.Component</h2> ) } componentDidMount() { // 组件挂载后触发 } componentWillReceivePorps(nextProps) { // 接收到新的props时触发 } shouldComponentUpdate(nextProps, nextState) { // 组件Props或者state改变时触发,true:更新,false:不更新 return true } componentWillUpdate(nextProps, nextState) { // 组件更新前触发 } componentDidUpdate() { // 组件更新后触发 } componentWillUnmount() { // 组件卸载时触发 } }
constructor()
加载的时候调用一次,能够初始化state
static getDerivedStateFromProps(props, state)
组件每次被rerender的时候,包括在组件构建以后(虚拟dom以后,实际dom挂载以前),每次获取新的props或state以后;每次接收新的props以后都会返回一个对象做为新的state,返回null则说明不须要更新state;配合componentDidUpdate,能够覆盖componentWillReceiveProps的全部用法
render()
react最重要的步骤,建立虚拟dom,进行diff算法,更新dom树都在此进行
componentDidMount()
组件渲染以后调用,只调用一次
static getDerivedStateFromProps(props, state)
组件每次被rerender的时候,包括在组件构建以后(虚拟dom以后,实际dom挂载以前),每次获取新的props或state以后;每次接收新的props以后都会返回一个对象做为新的state,返回null则说明不须要更新state;配合componentDidUpdate,能够覆盖componentWillReceiveProps的全部用法
shouldComponentUpdate(nextProps, nextState)
组件接收到新的props或者state时调用,return true就会更新dom(使用diff算法更新),return false能阻止更新(不调用render)
render()
react最重要的步骤,建立虚拟dom,进行diff算法,更新dom树都在此进行
getSnapshotBeforeUpdate(prevProps, prevState)
触发时间: update发生的时候,在render以后,在组件dom渲染以前;返回一个值,做为componentDidUpdate的第三个参数;配合componentDidUpdate, 能够覆盖componentWillUpdate的全部用法
componentDidUpdate()
组件加载时不调用,组件更新完成后调用
组件渲染以后调用,只调用一次
componentDidCatch(error,info)
任何一处的javascript报错会触发
import React, { Component } from 'react' export default class NewReactComponent extends Component { constructor(props) { super(props) // getDefaultProps:接收初始props // getInitialState:初始化state } state = { } static getDerivedStateFromProps(props, state) { // 组件每次被rerender的时候,包括在组件构建以后(虚拟dom以后,实际dom挂载以前),每次获取新的props或state以后;;每次接收新的props以后都会返回一个对象做为新的state,返回null则说明不须要更新state return state } componentDidCatch(error, info) { // 获取到javascript错误 } render() { return ( <h2>New React.Component</h2> ) } componentDidMount() { // 挂载后 } shouldComponentUpdate(nextProps, nextState) { // 组件Props或者state改变时触发,true:更新,false:不更新 return true } getSnapshotBeforeUpdate(prevProps, prevState) { // 组件更新前触发 } componentDidUpdate() { // 组件更新后触发 } componentWillUnmount() { // 组件卸载时触发 } }
旧的生命周期
新的生命周期