react-组件的生命周期

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

  • 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;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值