React组件生命周期

react组件生命周期
一个React组件的生命周期分为实例化,存在期,销毁

实例化

组件在客户端被实例化,第一次被创建时,以下方法依次调用
1.getDefaultProps//ES6/ES7创建时这个方法不可用
2.getInitialState//ES6/ES7创建时这个方法不可用
3.componentWillMount
4.render
5.componentDidMount

组件在服务端被实例化,第一次被创建时,以下方法依次调用
1.getDefaultProps
2.getInitialState
3.componentWillMount
4.render
在服务端在渲染过程中componentDidMount不会被调用

这里只讨论组件在前端的生命周期。
定义一个组件

class Demo extends React.Component{
  render(){
    return (
      <div>Hello,I'm {this.props.name},{this.props.age}</div>
     )
  }
}

getDefaultProps

getDefaultProps 这个方法只会调用一次,返回的对象可以用于设置默认的props,只适合React.createClass使用,使用ES6/ES7创建的这个方法不可用。
可以在挂载组件的时候设置props
<Demo name="ZiYe" age="18"/>

getInitialState

设置state初始值,只适合React.createClass使用,ES6初始化state方法如下

constructor(props){
  super(props);
  this.state = {
    like:false
  };
}

可通过this.setState 方法修改state

componentWillMount

该方法会在组件首次渲染之前调用,这个是在render方法调用前可修改state的最后一次机会。这个方法很少用到。

render

该方法会创建一个虚拟DOM。
React只更新必要的东西,React DOM会将元素和子元素与之前的状态比较,然后只更新必要的部分使DOM变为所希望的状态

componentDidMount

这个方法在首次真实DOM渲染后调用,仅此一次。

存在期

当props或者state发生变化时,会依次调用下列方法:
componentWillReceiveProps
1.shouldComponentUpdate(nextProps,nextState)
是否应该更新组件,默认返回true,当返回false时,后期函数就不调用,组件不会再次渲染。
2.componentWillUpdate
3.render
与实例化render相同
4.componentDidUpdate
更新真实的DOM成功后调用

销毁期

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 又是一个老生常谈的内容,从ES6起已经开始使用class的方式去创建组件,这种创建方式上的变化也带来了写法和方法上...
    殷灬商阅读 465评论 0 1
  • 在组件的整个生命周期中,随着该组件的props或者state发生改变,它的DOM表现也将有相应的改变,一个组件就是...
    web蜗牛阅读 573评论 0 1
  • 这一部分内容一直一知半解,最近发现一篇文章,非常好的解释了生命周期的问题,留存在这里,以备后查! 简介 一个rea...
    春木橙云阅读 944评论 0 5
  • React生命周期主要经历四个阶段:创建阶段,实例化阶段,和更新阶段。 创建阶段 主要发生在创建组件类时,即调用R...
    葶寳寳阅读 583评论 2 5
  • 1.组件挂载和卸载时 componentWillMount在render方法之前执行,只会在组件初始化时运行一次,...
    星月西阅读 1,002评论 0 0