React组件生命周期

2017-10-31  本文已影响0人  叶夏星辰

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 中添加的任务都需要再该方法中撤销,如创建的定时器或事件监听器

上一篇 下一篇

猜你喜欢

热点阅读