添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
生命周期图解-来自网络

1、getDefaultProps

该函数用于初始化一些默认的属性,通常会将固定的内容放在这个函数 中进行初始化和赋值;在组件中,可以利用this.props获取在这里初始化它的属性,由于组件初始化后,再次使用该组件不会调用getDefaultProps函数,所以组件自己不可以自己修改props(即:props可认为是只读的),只可由其他组件调用它时在外部修改。

2、getInitialState

该函数是用于对组件的一些状态进行初始化;

由于该函数不同于getDefaultProps,在以后的过程中,会再次调用,所以可以将控制控件的状态的一些变量放在这里初始化,如控件上显示的文字,可以通过this.state来获取值,通过this.setState来修改state值。

注意:一旦调用了this.setState方法,组件一定会调用render方法,对组件进行再次的渲染,不过,如果React框架会自动根据DOM的状态来判断是否需要真正的渲染

每一个React组件在加载时都有特定的生命周期,在此期间不同的方法会被执行。

3、componentWillMount

componentWillMount会在组件render之前执行,并且永远都只执行一次。

由于这个方法始终只执行一次,所以如果在这里定义了setState方法之后,页面永远都只会在加载前更新一次。

4、 render

render是一个组件中必须有的方法,本质上是一个函数,并返回JSX或其他组件来构成DOM,和Android的XML布局类似,注意:只能返回一个顶级元素;

此外,在render函数中,只可通过this.state和this.props来访问在之前函数中初始化的数据值 。

5、 componentDidMount

这个方法会在组件加载完毕之后立即执行。在这个时候之后组件已经生成了对应的DOM结构,可以通过this.getDOMNode()来进行访问。

如果你想和其他JavaScript框架一起使用,可以在这个方法中执行setTimeout,setInterval或者发送AJAX请求等操作(防止异部操作阻塞UI)。

componentDidMount: function() {

setTimeout(function() {

this.setState({items: {name: 'test'}})

}, 1000)

6、componentWillReceiveProps

在组件接收到一个新的prop时被执行。这个方法在初始化render时不会被调用。

Use this as an opportunity to react to a prop transition before render() is called by updating the state using this.setState().

旧的props可以通过this.props来获取。在这个函数内调用this.setState()方法不会增加一次新的render.

componentWillReceiveProps: function(nextProps) {

this.setState({

likesIncreasing: nextProps.likeCount > this.props.likeCount

7、 shouldComponentUpdate

返回一个布尔值。在组件接收到新的props或者state时被执行。在初始化时或者使用forceUpdate时不被执行。

可以在你确认不需要更新组件时使用。

shouldComponentUpdate: function(nextProps, nextState) {

return nextProps.id !== this.props.id;

如果shouldComponentUpdate返回false,render()则会在下一个state change之前被完全跳过。(另外componentWillUpdate和componentDidUpdate也不会被执行)

默认情况下shouldComponentUpdate会返回true.

By default, shouldComponentUpdate always returns true to prevent subtle bugs when state is mutated in place, but if you are careful to always treat state as immutable and to read only from props and state in render() then you can override shouldComponentUpdate with an implementation that compares the old props and state to their replacements

如果你需要考虑性能,特别是在有上百个组件时,可以使用shouldComponentUpdate来提升应用速度。

组件更新: componentWillUpdate

componentWillUpdate(object nextProps, object nextState)

在组件接收到新的props或者state但还没有render时被执行。在初始化时不会被执行。

一般用在组件发生更新之前。

组件更新: componentDidUpdate

componentDidUpdate(object prevProps, object prevState)

在组件完成更新后立即执行。在初始化时不会被执行。一般会在组件完成更新后被使用。例如清除notification文字等操作。

8、Unmounting: componentWillUnmount

在组件从DOM unmount后立即执行.

componentDidMount:function(){

this.inc = setInterval(this.update,500)