• 组件的生命周期


    参考
    https://www.tuicool.com/articles/nu6zInB

    /* 生命周期介绍
    1.组件的生命周期,分成三个状态:
    Mounting :组件挂载,已插入真是DOM
    Updating :组件更新,正在被重新渲染
    Unmouting :组件移出,已移出真是DOM

    2.组件的生命周期,分为四个阶段
    创建, 实例化, 更新, 销毁

    */


    /*方法
    1.Mounting 组件挂载相关方法
    (1)componentWillMount
    组件将要挂载,在render之前执行,但仅执行一次,及时多次重复渲染该组件,或者改变了组件的state
    (2)componentDidMount
    组件已经挂载,在render之后执行,同一个组件重复渲染只执行一次

    2.Updating 组件更新相关方法:
    (1)componentWillReceiveProps(object nextProps)
    已加载组件收到新的props之前调用,注意组件化渲染时,则不会执行
    (2)shouldComponentUpdate(object nextProps,object nextState)
    组件判断是否重新渲染时调用.该接口实际是在组件接收到了新的props或者新的state 的时候,会理解调用,然后通过
    (3)componentWillUpdate(object nextProps,object nextState)
    组件将要更新
    (4)componentDidUpdate(object prevProps,object prevState)
    组件已经更新

    3.Unmounting 组件移除相关
    (1)componentWillUnmount
    在组件将要被移除之前的时间点出发,可以利用该方法来执行一些必要的清理组件

    4.生命周期中与props和state相关方法
    (1)getDefaultProps 设置props属性默认值
    (2)getInitialState 设置state属性初始值

    */

    /*

    生命周期各个阶段

    */

    var Demo = React.createClass({
    /*
    一.创建阶段
    流程:
    只调用getDefaultProps方法

    */
    getDefaultProps:function () {
    //在创建类的时候被调用,设置this.props的默认值
    console.log("getDeafultProps");
    return {};
    },
    /*
    二.实例化阶段
    流程:
    getInitialState
    componentWillMount
    render
    componentDidMount

    */

    getInitialState:function () {
    console.log("getInitialState")
    return null;
    },
    componentWillMount:function () {
    //在render之前调用
    console.log("componentWillMount")

    },
    render:function () {
    //渲染并返回一个虚拟DOM
    console.log("render")
    return <div>hello React</div>
    },

    componentDidMount:function () {
    //在render之后调用
    //在该方法中,React会使render方法返回的虚拟DOM对象创建真实的DOM结构
    console.log("componentDidMount");

    },
    /*
    三. 更新阶段
    流程:
    componentWillReceiveProps
    shouldComponetUpdate 如果返回值是false, 后面三个方法不执行
    componentWillUpdate
    render
    componentDidUpdate

    */
    componentWillReceiveProps:function () {
    console.log("componentWillReceiveProps")
    },
    shouldComponentUpdate:function () {
    console.log("shouldComponentUpdate")
    return true;//返回false, 则不执行更新
    },
    componentWillUpdate:function () {
    console.log("componentWillUpdate")
    },
    componentDidUpdate:function () {
    console.log("componentDidUpdate")
    },

    /*
    四.销毁阶段
    流程:
    componentWillUnmount

    */
    componentWillUnmount:function () {
    console.log("componentWillUnmount")
    }

    });

    //渲染,第一次创建并加载组件
    ReactDOM.render(
    <Demo/>,
    document.getElementById("container")
    );
    //重新渲染
    ReactDOM.render(
    <Demo/>,
    document.getElementById("container")
    );
    //移除组件
    ReactDOM.unmountComponentAtNode(document.getElementById("container"));
  • 相关阅读:
    说话
    批处理程序判断命令返回结果 Virus
    摘抄:.NET垃圾回收和资源管理 Virus
    sharepoint:修改域账号密码和本机密码的代码和范例 Virus
    批处理中的for循环 Virus
    NHibernate学习总结:(一)NHibernate的使用和配置 Virus
    关于.NET大数据量大并发量的数据连接池管理 Virus
    爬网日志中的警告信息:文件达到最大下载次数,The file reached the maximum download limit. Check that the full text of the document can be meani Virus
    在批处理中运行.sql文件 Virus
    规划dll的目录 Virus
  • 原文地址:https://www.cnblogs.com/daxueshan/p/7932217.html
Copyright © 2020-2023  润新知