`
_wyh
  • 浏览: 60950 次
社区版块
存档分类
最新评论

React js组件的生命周期

阅读更多
组件的生命周期分为初始化阶段,运行中阶段,销毁阶段.不同阶段可以触发不同的函数运行.

初始化阶段函数:
    getDefaultProps: 每个组件只调用一次
    getInitialState: 每个实例初始化时调用
    componentWillMount: render之前运行
    render
    componentDidMount: render之后,并且整个组件渲染完之后才会触发
 
 : 实例化两个组件,测试每个函数运行的时间
<script type="text/babel">
    var count = 0;
    var InitialTest = React.createClass( {
        getDefaultProps: function () {
            console.log("getDefaultProps");
        },
        getInitialState: function () {
            console.log("getInitialState");
            return null;
        },
        componentWillMount: function () {
            console.log("componentWillMount");
        },
        render: function () {
            console.log("render");
            return (
                    <div>Hello I am Render</div>
            );
        },
        componentDidMount: function () {
            console.log("componentDidMount" + count++);
        }
    });
    ReactDOM.render(
            <div>
                <InitialTest />
                <InitialTest />
            </div>,
            document.getElementById("content")
    );
</script>
  测试结果为:
getDefaultProps     //第一个运行,并且不管实例化几个对象,都只运行这一次
getInitialState     //每实例化一次,就运行一次,常用来初始化数据
componentWillMount    // 每实例化一次,就运行一次
render        // 每实例化一次,就运行一次
getInitialState
componentWillMount
render
componentDidMount      //  每实例化一次,运行一次,并且是等该组件渲染完之后才运行
componentDidMount  
  


运行中阶段函数:
    componentWillReceiveProps  由父组件传入的属性发生变化时运行
    shouldComponentUpdate   返回false时,render不会调用
    componentWillUpdate   发生改变会运行,不能修改属性和状态
    render   
    componentDidUpdate  可以用来修改DOM
  
: 测试每个函数运行时间,建立两个控件,HelloWorld组件实现文本Hello, XXX, 设置XXX为属性name,当name为空,
返回World,否则返回XXX. InputHello是HelloWorld的父组件,设置一个InputHello的状态
input传入HelloWorld的name属性,InputHello除了实现HelloWorld功能外,实现一个 input框
,当input改变时,input改变,从而HelloWorld的属性name跟着改变.
<script type="text/babel">
    var HelloWorld = React.createClass({
        componentWillReceiveProps: function (newObj) {
            console.log("componentWillReceiveProps");
        },
        shouldComponentUpdate: function () {
            console.log("shouldComponentUpdate");
            return true;
        },
        componentWillUpdate: function () {
            console.log("componentWillUpdate");
        },
        render: function () {
            console.log("render");
            return <p>Hello, {this.props.name ? this.props.name : "World"}</p>;
        },
        componentDidUpdate: function() {
            console.log("componentDidUpdate");
            ($(ReactDOM.findDOMNode(this)).append("--Append--"))
        }
    });
    var InputHello = React.createClass({
        getInitialState: function () {
            return {input: ''};
        },
        handleChange: function (event) {
            this.setState({name: event.target.value});
        },
        render: function () {
            return <div>
                <HelloWorld name={this.state.input}></HelloWorld>
                <br/>
                <input type="text" onChange={this.handleChange} />
            </div>
        }
    });
    ReactDOM.render(
            <div>
                <InputHello />
            </div>,
            document.getElementById("content")
    );
</script>
  从input框中输入文本,控制台输出结果顺序为:
componentWillReceiveProps
shouldComponentUpdate
componentWillUpdate
render
componentDidUpdate
 
0
0
分享到:
评论

相关推荐

    react-一个npm包用于跟踪和可视化任意React组件的生命周期方法

    这个名为"react-一个npm包用于跟踪和可视化任意React组件的生命周期方法"的资源提供了一个工具,帮助开发者理解和调试React组件的生命周期。在React中,组件有三个主要的生命周期阶段:挂载阶段(Mounting)、更新...

    React+组件+生命周期和状态+理解

    类组件则允许我们利用React的生命周期方法和内部状态,但ES6类组件正逐渐被函数式组件和Hooks所替代。 生命周期方法是React类组件中的关键特性,它们允许我们在特定时间点执行代码,比如在组件挂载、更新或卸载时。...

    老生常谈js-react组件生命周期

    React组件生命周期是指React组件从创建、挂载到卸载的一个完整过程。在这个过程中,组件会经历不同的阶段,并且会调用一系列的方法,这些方法统称为生命周期方法。理解组件的生命周期对于构建高效、可维护的React...

    React基础概念与环境搭建+React组件与生命周期+状态管理与Redux集成+React路由与导航等全套教程

    React组件与生命周期 状态管理与Redux集成 React路由与导航 React与RESTfulAPI交互 React中的表单与状态控制 React高级主题:Hooks React性能优化与懒加载 React中的错误边界与异常处理 React与GraphQL React动画与...

    React生命周期方法的实时可视化工具.zip

    在React应用中,每个组件都有其特定的生命周期,这些生命周期方法允许开发者在组件的不同阶段执行特定操作。本项目是一个开源的React生命周期方法实时可视化工具,它可以帮助开发者更好地理解和调试React组件的生命...

    react+ts+antd cron表达式组件

    5. 状态管理:使用React的状态管理和生命周期方法,保持组件状态的一致性。 6. 样式:Ant Design的CSS类会被应用到组件上,提供一致且美观的外观。 开发这样一个组件,开发者需要熟悉React的组件化思想,理解...

    react-基于viewerjs实现的react图片预览组件支持的旋转缩放和缩放等操作

    将Viewer.js与React结合,可以利用React的组件化思想和生命周期方法,更好地管理和控制图片预览的状态。 在React中实现Viewer.js图片预览组件的步骤大致如下: 1. **安装依赖**:首先需要在项目中安装Viewer.js和...

    取得一棵ReactNative组件树并将其渲染为SVG

    首先,React Native的组件生命周期包括挂载(Mounting)、更新(Updating)和卸载(Unmounting)三个主要阶段。在挂载阶段,组件的`render`方法会被调用,生成虚拟DOM(即React元素),接着这些元素被转换成实际的...

    RCLCV:React组件生命周期可视化器

    **React组件生命周期可视化器——RCLCV** 在前端开发领域,React.js是一个广泛使用的JavaScript库,用于构建用户界面,...通过深入理解JavaScript和React组件生命周期,开发者可以创建出更加高效、可维护的前端应用。

    react-react面试题之生命周期的不同阶段.zip

    在React中,组件经历多个阶段,每个阶段都有特定的方法,这些方法称为生命周期方法,用于执行特定任务。 1. **挂载阶段(Mounting)**: - `constructor()`: 组件实例化时调用,初始化state和绑定事件。 - `...

    基于百度地图JavaScript API封装的React组件库

    React-BMap只是利用了React组件的生命周期,来调用对应的百度地图JavaScript Api的方法,比如在componentDidMount和componentDidUpdate的时候在地图上添加覆盖物,componentWillUnmount的时候移除覆盖物,React对应...

    生命周期钩子函数——domo.zip

    压缩包中的代码可能包括对React组件生命周期的使用,以及如何结合CSS和JavaScript实现轮播图的动画效果,例如切换图片、显示指示器、处理箭头点击事件等。具体实现方式可能包括使用状态来追踪当前显示的图片索引,...

    react-vuetoreactVue组件转React组件

    - **生命周期方法**:Vue的生命周期钩子(如`created`,`mounted`)需转换为React的生命周期方法或函数组件的钩子(如`useEffect`,`useRef`)。 - **导入和导出**:Vue的组件导入和导出方式与React不同,需要进行...

    react数字折叠翻页效果组件

    在这个数字翻页组件的例子中,我们可以预想`&lt;FlipNumber&gt;`是一个自定义的React组件,它可能包含了自己的状态管理和生命周期方法,以便于处理数值的更新和动画效果。 JavaScript和ECMAScript是Web开发中的基础,它们...

    react基础学习资料-生命周期-redux-fetch接口

    在学习React时,"react学习图"可能是组件生命周期的可视化表示,有助于直观理解各个方法的执行顺序。"reactѧϰͼ"可能包含了React组件结构、组件间通信方式等基础知识的图表,帮助初学者快速上手。 总的来说,这份...

    react-使用自定义元素将React组件挂载到DOM

    例如,如果自定义元素有自己的生命周期方法(如`connectedCallback`),可能需要在这些方法中触发React组件的重新渲染。此外,当自定义元素被移除时,也需要正确地卸载React组件以防止内存泄漏。 在实际项目中,...

    将React组件转换为Vue组件

    Vue的模板语法更接近HTML,而React的JSX允许在JavaScript中直接写HTML,这使得React组件更加灵活,但可能引入更多的JS错误。 9. **生命周期转换** 将React的生命周期方法映射到Vue,例如: - `componentDidMount...

    react-CompositorKit用于开发文档化和测试React组件库的工具

    3. **生命周期方法**:在React组件的生命周期中,有一些特定的时刻可以执行特定的操作,如`componentDidMount`、`shouldComponentUpdate`和`componentDidUpdate`等。这些生命周期方法在不同阶段帮助管理组件的状态和...

    react-一个可以把文本中多个关键字高亮显示的react组件

    7. **React Hooks**:如果组件使用的是React 16.8及以上版本,可能会利用hooks如`useState`和`useEffect`来替代传统的类组件生命周期方法,以更简洁的方式管理状态和副作用。 8. **性能优化**:如果文本非常大,...

    react组件实现

    下面我们将深入探讨React组件的原理、类型、生命周期以及如何在实际项目中进行应用。 1. **React组件的定义** - React组件是JavaScript函数或类,它们接收称为"props"(属性)的数据,并返回一个React元素,这个...

Global site tag (gtag.js) - Google Analytics