react的生命周期

    1. 什么是声明周期?
      组件本质上就是状态机,输入确定,输出一定确定。如何理解这一点?react有两个特点,第一个就是去除了所有的手动dom操作,也就是使用jsx。第二个就是组件把状态和结果一一对应起来,从而能够直观的看出来,程序在不同的状态是的输出。属性是由父组件传递给子组件的,状态是子组件内部维护的一些数据,当状态发生变化时候,组件也会进行更新,因此我们可以理解成一个state对应一个render的结果,这样我们就可以知道在不同的state下,组件会render出什么样的结果,从而就知道组件在页面上展示的内容是什么。状态机本质上就是状态和转移的结合,我们刚才说过,不同的状态对应不同的输出,状态和状态之间有时候会发生转换,当状态发生转变的时候,会触发不同的钩子函数,从而让开发者有机会做出相应,因为状态转换是由react来进行维护的。作为开发者没有 办法直接的参与到状态转换中,但是react给我们提供了很多钩子函数,我们可以自己来编写这些钩子函数,这样react在进行状态转换的时候,就可以调用我们的状态函数。

      我们也可以用事件的思路来理解状态,开发者不知道什么时候会发生事件,但是我们可以决定在发生事件的时候,执行什么动作,也就是事件的监听器,状态和事件有一些类似,他们的区别是事件和事件之间没有直接的关系,每个事件都是独立发生的,但是状态和状态之间是有关系的,组件可以处于不同的状态中,那么组件所有的状态组合起来,就构成了组件的声明周期。

    2. 组件的生命周期有哪些部分?
      初始化阶段:用我们编写的组件代码来生成组件的实例,组件代码就是我们写的class,就像面向对象中的类一样,class是不会真正的被使用的,我们真正使用的是class初始化出来的实例。举个例子,假设我们有一个HelloWorld组件,那么我们在页面的两个地方使用了HelloWorld,这两个地方渲染出来的是两个实例,实例和实例之间是不同的,但是他们都来自同一个组件,也就是他们是使用同一个组件初始化出来的,在初始化阶段,组件会进行一些初始的状态设置,以及渲染,也就是render,在初始化完成之后,实例就会真正的显示在页面上,以被用户使用。

      初始化结束以后,就进入了运行中,对于实例来说,绝大部分时间都处于运行中,运行中实例的状态可能发生改变,从而触发一系列的钩子函数,最终这些改变可能导致组件被重新渲染,注意这里我们说的是可能导致,有一些改变可能并不会导致组件被重新渲染,只是内部的状态发生了变动

    3. 最后就是销毁阶段。不使用组件的时候,就会被销毁

      这三者发生的时间是不固定的,需要根据页面来进行判断,这三个阶段只是在逻辑上对组件进行了分类,实际上我们在编写代码的时候,关注的是钩子函数以及他们的用法。

    4. 不同的声明周期可以自定义的函数
      初始化阶段:
                     getDefaultProps:获取实例的默认属性,这个只会在组件的第一个被初始化的时候被调用,也就是说从第二个组件开始,只会调用其他的。同一个组件所有的实                                        例,他们拿到的默认属性都是一样的。
                     getInitialState:获取实例的初始化状态
                     componentWillMount:组件即将被装载,也就是组件即将被渲染到页面上。注意在这个阶段,组件还没有真正的被渲染
                     render:组价在render函数中生成虚拟的dom节点,也就是jsx,最后由react把虚拟的dom节点渲染称为真正的dom节点,并放到页面中,让用户可以看到,                                        并且进行交互
                     componentDidMount:这个函数和第三个函数的区别will变成到了did也就是说他是在组件被装载之后调用的,这个函数被调用的时候,组件已经被渲染到了                                          页面中
      运行中:
                  
                     componentWillReceiveProps:组件将要接收到属性的时候调用,如果组件的属性发生变化,比如说父组件改变了组件的属性,那么组件就需要进行更新,准确的说是组件可能要进行更新,这个函数是在接收到属性之前触发的,属性在被传送给组件之前,开发者有机会去处理这样的属性,比如说修改属性,更新一些内部的状态等等,这里属性还是没有被传送个组件,
                     shouldComponentUpdate:当组件接收到新属性或者新状态的时候,就会触发这个函数,从名字上来看,这个函数是一个疑问句,他说的是组件是否要更新,显然我们可以告诉他组件不需要更新。既然react会帮助我们判断组件是否要更新,那么我们为什么还要去手动进行判断呢?因为有的时候状态或者属性的变化,并不会导致组件发生更新,如果组件不需要更新我们可以直接在这步直接返回false,这样的话,react就不会直接调用render函数,从而可以提高性能,如果我们不进行这样的操作,那么即使render返回的结果一样,react也需要经过render以及diff算法来判断组件是否需要更新,如果我们在这步直接返回false,那么react就不要在进行这两步操作,从而可以提高性能,
                     componentWillUpdate:他会在render触发之前调用这时候我们是已经处于运行中,需要的是更新操作,而不是装载操作。
                     render:和我们初始化的render是一样的。
                     componentDidUpdate:会在render结束之后,真正的dom被创建完毕后被调用。

      销毁阶段:componentWillUnmount:这个函数会在销毁真正被执行之前被调用,给开发者一些真正的机会来进行一些清理的操作。

时间: 2024-09-26 20:10:36

react的生命周期的相关文章

关于React的生命周期

React 的主要思想是通过构建可复用组件来构建用户界面.所谓组件其实就是 有限状态机,通过状态渲染对应的界面,且每个组件都有自己的生命周期,它规定了组件的状态和方法需要在哪个阶段进行改变和执行.有限状态机(FSM),表示有限个状态以及在这些状态之间的转移和动作等行为的模型.一般通过状态.事件.转换和动作来描述有限状态机.React 通过管理状态来实现对组件的管理. 虽然组件.状态机.生命周期这三者都不是 React 独创,如果熟悉 Web Components 标准,它与其中的自定义组件的生命

React组件生命周期小结

转载自:http://www.jianshu.com/p/4784216b8194 下面所写的,只适合前端的React.(React也支持后端渲染,而且和前端有点小区别,不过我没用过.) 相关函数 简单地说,React Component通过其定义的几个函数来控制组件在生命周期的各个阶段的动作. 在ES6中,一个React组件是用一个class来表示的(具体可以参考官方文档),如下: // 定义一个TodoList的React组件,通过继承React.Component来实现 class Tod

React—组件生命周期详解

React-组件生命周期详解 转自 明明的博客  http://blog.csdn.net/slandove/article/details/50748473 (非原创) 版权声明:转载请注明出处,欢迎加入QQ群(115402375)讨论!博客编写已经转移到http://blog.csdn.net/limm33 在组件的整个生命周期中,随着该组件的props或者state发生改变,它的DOM表现也将有相应的改变,一个组件就是一个状态机,对于特定的输入,它总会返回一致的输出. React为每个组件

react.js 生命周期componentDidUpdate的另类用法:防止页面过渡刷新

场景:数据新增成功之后,需要返回原来的查询表,这时候的查询,需要使用react的生命周期:componentDidUpdate componentDidUpdate() 这个生命周期的作用是当props或state更新之后,使用它更新DOM节点.如果使用不当,则查询页面会不停的调用查询的方法,不停的执行刷新操作.因此,需要给新增的方法增加一个标志,通过这个标志,判断,如果新增成功,则调用一次查询方法,否则,则不调用. 这个标志,通常在 2 个位置使用: 1. action的 新增 方法中: 2.

React组件生命周期过程说明【转】

实例化 首次实例化 getDefaultProps getInitialState componentWillMount render componentDidMount 实例化完成后的更新 getInitialState componentWillMount render componentDidMount 存在期 组件已存在时的状态改变 componentWillReceiveProps shouldComponentUpdate componentWillUpdate render com

【07】react 之 生命周期

阅读目录(Content) 实例化 getDefaultProps getInitialState componentWillMount render componentDidMount 存在期 componentWillReceiveProps shouldComponentUpdate componentWillUpdate componentDidUpdate 销毁时 componentWillUnmount 反模式 上篇博文使用React开发的一些注意要点对React开发的一些重点进行了

React js生命周期

文章来源:React:组件的生命周期 另来源于幕课网课程<React入门>

React组件生命周期过程说明

实例化 首次实例化 getDefaultProps getInitialState componentWillMount render componentDidMount 实例化完成后的更新 getInitialState componentWillMount render componentDidMount 存在期 组件已存在时的状态改变 componentWillReceiveProps shouldComponentUpdate componentWillUpdate render com

react组件生命周期过程

来自kiinlam github 实例化 首次实例化 getDefaultProps getInitialState componentWillMount render componentDidMount 实例化完成后的更新 getInitialState componentWillMount render componentDidMount 存在期 组件已存在时的状态改变 componentWillReceiveProps shouldComponentUpdate componentWill