美文网首页
React 生命周期杂记

React 生命周期杂记

作者: 六毫笙 | 来源:发表于2017-11-27 19:06 被阅读0次

最新版:https://www.zybuluo.com/c-Ku/note/808873

实例化

当组件在客户端被实例化,第一次被创建时,以下方法被调用:

1. getDefaultProps

只调用一次,用于设置 props 的值。

2. getInitialState

只调用一次,用于初始化每个实例的 State,在该方法里可以访问组件的porps。
如果使用ES6的语法,可以在构造函数中初始化状态
如:constructor (props)

3. componentWillMount

在首次渲染前调用,也是在render加载前最后一次修改 state 的机会。

4. render

该方法会创建一个虚拟Dom,用来表示组件的输出
且只能通过 this.state 和 this.props 访问数据
可以返回 null、false 或 任何react组件
只能出现一个顶级组件,不能返回一组元素

5. componentDidMount

该组件不会在服务端渲染的过程中调用
调用时,真实的Dom已经生成
可通过 this.getDOMNode()this.findDOMNode()

示例:

var Area = React.createClass({
    render: function(){
        this.getDOMNode()
        //render调用时,组件未挂载,这里将报错
        return <canvas ref='mainCanvas'>
    },
    componentDidMount: function(){
        var canvas = this.refs.mainCanvas.getDOMNode();
        //这是有效的,可以访问到 Canvas 节点
    }
})

存在期

当组件渲染好,且用户已经可以进行交互(如点、触),可改变应用状态时,下面的方法会被依次调用

1. componentWillReceiveProps

父组件更改 props 时被调用
可在该方法内更新State,而触发 render 方法重新渲染组件

示例:

componentWillReceiveProps: function (nextProps) {
  if (nextProps.checked !== undefined) {
    this.setState({
      checked: nextProps.checked
    })
  }
}

2. shouldComponentUpdate

若确定组件的 props 或者 state 的改变不需重新渲染
可用该方法返回 false 来阻止事件的重新渲染
之后便不会执行 render 以及后面的 componentWillMount 和 componentDidUpdate
react.PureComponent 才有该方法

3. componentWillUpdate

和 componentWillMount 类似
组件接受到 props 或者 state 即将重新渲染前
会对以下形式方法进行调用
componentWillUpdate(object nextProps, object nextState)
使用此方法时切勿修改 props 和 state

4. componentDidUpdate

和 componentDidMount 类似
组件将要重新渲染前,会对以下形式方法进行调用
componentDidUpdate(object prevProps, object prevState)
在这里可以访问并修改DOM

销毁时

1. componentWillUnmount

每当 react 用完一个组件,这个组件必须从DOM中卸载并销毁
此时该方法会被执行,完成所有的清理和销毁工作
在 componentDidMount 中添加的任务都需要在该方法中撤销
如创建的 定时器 或事件监听器

相关文章

  • React 生命周期杂记

    最新版:https://www.zybuluo.com/c-Ku/note/808873 实例化 当组件在客户端被...

  • React概念图

    React概念图 React组件生命周期概念图 参考文档:React入门教程 组件生命周期React:组件生命周期...

  • React基础篇之组件的生命周期

    引出生命周期 react生命周期(旧) react生命周期(新) getSnapshotBeforeUpdate的...

  • React生命周期

    React v16.0前的生命周期 React v16.4+ 的生命周期图 React v16.9后这些生命周期钩...

  • React v16 生命周期

    React 16 生命周期 React 16.3 新增的生命周期方法 逐渐废弃的生命周期方法: 一般将生命周期分成...

  • 学习并实现react (4)

    实现生命周期 生命周期介绍 React 生命周期图 React 子组件在父组件下的生命周期流程 实现 compon...

  • React面试题 整理脑图

    react基础 React生命周期 react-router react进阶 react Hooks redux 其他

  • react/vue常见问题整理

    一、react 1. react生命周期 react 16生命周期相对于15的变化:componentWillMo...

  • React 组件生命周期

    组件生命周期 参考阅读: component-lifecycle react组件生命周期过程说明 react 组件...

  • 《深入React技术栈》学习笔记Ⅲ

    以下的生命周期都是在 React 15 的生命周期, React 16 的生命周期 API 已经发生变化。Reac...

网友评论

      本文标题:React 生命周期杂记

      本文链接:https://www.haomeiwen.com/subject/dhodbxtx.html