React的生命周期函数

一、生命周期函数的定义

在某个时刻自动被调用的函数是生命周期函数

二、React中生命周期函数示意图

lifeFuncs.png

为了记忆方便,我把componentWillXXX-render-componentDidXXX的过程简单地称为Will-render-Did
那么上面的图示就可以简化成:

生命周期.png

三、生命周期函数的调用时期

  • Initialization
    执行Constructor,初始state和props
  • Mounting
    Will:先执行,判断组件是否挂载
    render:渲染组件
    Did:组件渲染完成后执行
  • Updation
    ComponentWillReceiveProps:如果组件不是第一次存在页面且父组件render执行时,才执行
    ComponentShouldUpdate:判断组件是否需要更新,如果返回true,表示需要更新;如果返回false,则表示不需要更新
    Will:更新组件前执行
    render:state发生变化,或者父组件的render(props发生变化)执行时执行
    Did:组件更新完成后执行
  • UnMounting
    Will:组件移除之前执行
    注意:1. 如果移除组件,那么Updation中的生命周期函数不会被执行
             2. render不能省略,因为render不存在Component中,不能继承而来,需要自定义

四、生命周期函数的使用场景

  • 避免子组件不必要的更新
    我们知道如果父组件的render执行,子组件的render会被执行,重新渲染子组件。但是,父组件render的执行不一定是该子组件绑定的数据改变造成的,这就造成了子组件不必要的更新。
    解决方法:
    // 在子组件中
    ComponentRecevieProps(nextProps, nextState){
      // content是props中的一个属性
      return nextProps.content !== this.props.content
    }
    
  • 发送ajax请求
    ajax请求最好放在ComponentDidMount中
    componentDidMount(){
        // 这里使用了axios模块
        axios.get('/api/todolist')
        .then(() => {alert('success')})
        .catch(() => {alert('error')})
    }
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 作为一个合格的开发者,不要只满足于编写了可以运行的代码。而要了解代码背后的工作原理;不要只满足于自己的程序...
    六个周阅读 12,692评论 1 33
  • 本笔记基于React官方文档,当前React版本号为15.4.0。 1. 安装 1.1 尝试 开始之前可以先去co...
    Awey阅读 12,312评论 14 128
  • 使用 create-react-app 快速构建 React 开发环境 项目的目录结构如下: React JSX ...
    majun00阅读 3,459评论 0 0
  • 生命周期流程图简单如下: 组件让你把用户界面分成独立的,可重复使用的部分,并且将每个部分分开考虑。React.Co...
    Simple_Learn阅读 4,738评论 0 0
  • 昨天做了一个梦,梦见得到一对新的耳钉,非常漂亮非常喜欢,但是耳眼找不到了,捅了好长时间终于戴了上了耳朵,就在以为可...
    张佳敏阅读 962评论 0 0