Component Specs and LifeCycle

<div id="app"></div>

<script src="bower_components/react/react.min.js"></script>
<script src="bower_components/react/react-dom.min.js"></script>
<script src="lib/babel-core/browser.min.js"></script>
<script type="text/babel">
    var MessageBox = React.createClass({
        getInitialState: function () {
            return {
                count: 0
            }
        },
        componentWillMount: function () {
            console.log('componentWillMount');
            var self = this;

            this.timer = setInterval(function () {
                self.setState({
                    count: self.state.count + 1
                });
            }, 1000);

        },
        componentDidMount: function () {
            console.log('componentDidMount');
            console.log(this);
        },
        componentWillUnmount: function () {
            console.log('卸载掉组件');
            clearInterval(this.timer);
        },
        render: function () {
            return (
                <div>
                    <h1>{this.state.count}</h1>
                </div>
            );
        }
    });

    var messagebox = ReactDOM.render(
        <MessageBox/>,
        document.getElementById('app')
    );
</script>
<div id="app"></div>

<script src="bower_components/react/react.min.js"></script>
<script src="bower_components/react/react-dom.min.js"></script>
<script src="lib/babel-core/browser.min.js"></script>
<script type="text/babel">
    var MessageBox = React.createClass({
        getInitialState: function () {
            return {
                count: 0
            }
        },
        getDefaultProps: function () {

        },
        /*componentWillMount: function () {

        },
        componentDidMount: function () {

        },
        componentWillUnmount: function () {

        },
        */
        shouldComponentUpdate: function (nextProp, nextState) {
            console.log('shouldComponentUpdate');
            if(nextState.count > 3) return false;
            return true; // 必须返回一个true或者false
        },
        componentWillUpdate: function (nextProp, nextState) {
            console.log('componentWillUpdate');
        },
        componentDidUpdate: function () {
            console.log('成功更新啦');
        },
        doUpdate: function () {
            this.setState({
                count: this.state.count + 1
            });
        },
        render: function () {
            return (
                <div>
                    <h1>{this.state.count}</h1>
                    <button onClick={this.doUpdate}>手动更新一下组件(包括子组件)</button>
                    <SubMessage message={this.state.count} />
                </div>
            );
        }
    });

    var SubMessage = React.createClass({
        componentWillReceiveProps: function (nextProp) {
            console.log('子组件将要获得prop');
        },
        shouldComponentUpdate: function (nextProp, nextState) {
            if(nextProp.message > 2) return false;
            return true;
        },
        render: function () {
            return (
                <div>
                    <h3>{this.props.message}</h3>
                </div>
            );
        }
    });

    var messagebox = ReactDOM.render(
        <MessageBox/>,
        document.getElementById('app')
    );
</script>

React(三)组件的生命周期的更多相关文章

  1. reactjs入门到实战(七)---- React的组件的生命周期

    React的组件的生命周期有三个状态分别是:挂载(生产组件示例化.准备挂载到页面.挂载到页面).更新(更新值.更新DOM).和卸载(卸载后). >>>其他     getInitia ...

  2. react native组件的生命周期

    react native组件的生命周期 一.当页面第一次加载时,会依次调用: constructor() componentWillMount(): 这个函数调用时机是在组件创建,并初始化了状态之后, ...

  3. Android React Native组件的生命周期及回调函数

    熟悉android的童鞋应该都清楚,android是有生命周期的,其很多组件也是有生命周期.今天小编和大家分享的React Native组件的生命周期,还不了解的童鞋,赶紧来围观吧 在android开 ...

  4. 【RN - 基础】之React Native组件的生命周期

    下图描述了React Native中组件的生命周期: 从上图中可以看到,React Native组件的生命周期可以分为初始化阶段.存在阶段和销毁阶段. 实例化阶段 实例化阶段是React Native ...

  5. React Native组件、生命周期及属性传值props详解

    创建组件的三种方式 第一种:通过ES6的方式创建 /** * 方式一 :ES6 */ export default class HelloComponent extends Component { r ...

  6. React:组件的生命周期

    在组件的整个生命周期中,随着该组件的props或者state发生改变,其DOM表现也会有相应的变化.一个组件就是一个状态机,对于特定地输入,它总返回一致的输出. 一个React组件的生命周期分为三个部 ...

  7. react教程 — 组件的生命周期 和 执行顺序

    一.组件执行的生命周期:                  参考  https://www.cnblogs.com/soyxiaobi/p/9559117.html  或  https://www.c ...

  8. React Native——组件的生命周期

    组件生命周期 上流程图描述了组件从创建.运行到销毁的整个过程,可以看到如果一个组件在被创建,从开始一直到运行会依次调用getDefaultProps到render这五个函数:在运行过程中,如果有属性和 ...

  9. React入门--------组件的生命周期

    Mounting/组件挂载相关: componentWillMount componentDidMount Updating/组件更新相关: componentWillReceiveProps sho ...

随机推荐

  1. 在JAVA中把JSON数据格式化输出到控制台

    public class ForMatJSONStr { public static void main(String[] args) { String jsonStr = "{\" ...

  2. Java多线程理解

    首先说一下进程和线程的区别 进程:是计算机运用程序实例,拥有独立的内存空间和数据(猜测内存堆应该是作用的进程上),一个进程包含多个子线程,不同进程相互独立: 线程:cpu执行的基本单位,拥有独立的寄存 ...

  3. VC 单文档视图分割

    http://blog.csdn.net/smartwhitehorse/article/details/6707183 主要使用类:CSplitterWnd 问题:分割线的固定,需要重写CSplit ...

  4. 父窗口window.showModalDialog传值 子窗口window.returnValue返回值

    父窗口打开子窗口页面: var fatherWindow = document.all.dealReason;//想传的值 win = window.showModalDialog(strUrl, f ...

  5. [置顶]PADS PCB功能使用技巧系列之NO.001- 如何走蛇形线?

    蛇形线是布线过程中常用的一种走线方式,其主要目的是为了调节延时满足系统时序设计要求,但是设计者应该有这样的认识:蛇形线会破坏信号质量,改变传输延时,布线时要尽量避免使用,因此一块PCB上的蛇形线越多并 ...

  6. LintCode 392 House Robber

    // Ref: https://segmentfault.com/a/1190000003811581// Ref: http://www.cnblogs.com/grandyang/p/438363 ...

  7. Sublime Text 3专题

    MarkDown语法记笔记 1.下载&&安装 下载 常用插件安装 Submlit使用教程 [如何优雅地使用Sublime Text3] 2.Sublime Text 便捷技巧 [以PH ...

  8. fallacies of distributed computing

    The network is reliable. Latency is zero. Bandwidth is infinite. The network is secure. Topology doe ...

  9. 黑马程序员——HTML表格布局

    ---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net ...

  10. 文件系统权限引起IIS站点总跳登录页面

    今天在IIS上部署一个ASP.NET站点时遇到一个很奇怪的问题,不管访问什么页面,都会跳到登录页面,即使是访问静态文件. 折腾半天,百思不得其解,百整不得其果... 后来突然想到,是不是站点所在文件夹 ...