react-组件的生命周期

来源:互联网 发布:2015nba总决赛数据 编辑:程序博客网 时间:2024/06/07 10:02

组件的生命周期分为三个状态:

  • Mounting:已插入真实的DOM
  • Updating: 正在被重新渲染
  • Unmounting : 已移除真实的DOM

React为每个状态都提供了两种处理函数,will在进入状态之前调用,did在函数进入状态之后调用,三种状态供给五种处理函数。

  • componentWillMount
  • componentDidMount
  • componentWillUpdate( object nextProps, object nextState )
  • componentDidUpdate( object nextProps, object nextState )
  • componentWillUnmount()

此外,react还提供了两种特殊状态的处理函数。

  • componentWillReceiveProps( object nextProps ) 已加载组件收到新的参数时调用
  • shouldComponentUpdate( object nextProps, object nextState ) 组件判断是否重新渲染时调用。

我们看一个例子
ES5写法

var Hello = React.createClass({  getInitialState: function () {    return {      opacity: 1.0    };  },  componentDidMount: function () {    this.timer = setInterval(function () {      var opacity = this.state.opacity;      opacity -= .05;      if (opacity < 0.1) {        opacity = 1.0;      }      this.setState({        opacity: opacity      });    }.bind(this), 100);  },  render: function () {    return (      <div style={{opacity: this.state.opacity}}>        Hello {this.props.name}      </div>    );  }});ReactDOM.render(  <Hello name="world"/>,  document.body);

ES6写法

import React,{ Component } from "react";import { render } from "react-dom";class Hello extends Component{    constructor(props){        console.log('init');        super(props);        this.state = {            opacity: 1.0,            background: 'red'        }    }    render(){        return(            <div className="hello" style={{ opacity: this.state.opacity,background: this.state.background}}>                Hello            </div>        )    }    componentDidMount(){        //alert("did");        console.log(this);        var self = this;        self.timer = setInterval(function(){            var opacity = self.state.opacity;            opacity -= .05;            if( opacity < 0.1 ){                opacity = 1.0;            }            self.setState({                opacity: opacity            })        },100)    }    componentWillMount(){        //alert("will");    }}export default Hello;
原创粉丝点击