vue和react 的生命周期

一、vue的生命周期:

包括 created, mounted, updated, destroyed, 以及各自的before钩子。

参考 vue 生命周期图示

 

new Vue({
        name: 'demo',
        el: '#demo',
        beforeCreate() {
          //在实例初始化之后,数据观测 (data observer) 
          //和 event/watcher 事件配置之前被调用。 
        },
        created() {
          //在实例创建完成后被立即调用。在这一步,
          //实例已完成以下的配置:数据观测 (data observer),属性和方法的运算,
          //watch/event 事件回调。然而,挂载阶段还没开始,$el 属性目前不可见。
        },
        beforeMoute(){
          //在挂载开始之前被调用:相关的 render 函数首次被调用。
        },
        mounted() {
          //el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子。
          //如果 root 实例挂载了一个文档内元素,当 mounted 被调用时 vm.$el 也在文档内。
          /*
          *mounted 不会承诺所有的子组件也都一起被挂载。
          *如果你希望等到整个视图都渲染完毕,可以用 vm.$nextTick
          */
          this.$nextTick(function () {
            // Code that will run only after the
            // entire view has been rendered
          })
        },
        beforeUpdate() {
          //数据更新时调用,发生在虚拟 DOM 重新渲染和打补丁之前。
        },
        updated() {
          //数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子。
          /*
          *同样updated不会承诺所有的子组件也都一起被挂载。
          *如果你希望等到整个视图都渲染完毕,可以用 vm.$nextTick
          */
        },
        beforeDestroy() {
          //实例销毁之前调用。在这一步,实例仍然完全可用。
        },
        destroyed() {
          //Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,
          //所有的事件监听器会被移除,
          //所有的子实例也会被销毁。
        }
    });

二、vue的父子间的渲染和销毁周期:

  1. 加载渲染过程:
    1. 父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount->子mounted->父mounted
  2. 更新过程:
    1. 父beforeUpdate->子beforeUpdate->子updated->父updated
  3. 销毁过程
    1. 父beforeDestroy->子beforeDestroy->子destroyed->父destroyed

 

三、React生命周期:

一个React组件的生命周期分为三个部分:挂载期(Mounting)、存在更新期(Updating)和销毁时(Unmounting)。

class Welcome extends React.Component {
    // 继承react的props,和设置state的初始化
    constructor(props) {
      super(props); //不能缺少
      this.state = {
        color: props.initialColor
      };
    }
    // 类似Vue的beforeMoute,只mount前调用一次,在 render 之前调用
    componentWillMount();
     
    /* 类似Vue的template 该方法会创建一个虚拟DOM,用来表示组件的输出。
    render方法需要满足下面几点: 
      1.只能通过 this.props 和 this.state 访问数据(不能修改)
      2.可以返回 null,false 或者任何React组件 
      3.只能出现一个顶级组件,不能返回一组并列元素(**react16也支持返回数组了**) 
      4.不能改变组件的状态 
      5.不能修改DOM的输出 
    */
    render() {
        return <h1>Hello World!</h1>;
    }
    
    // 类似Vue的mounted, 在 render 之后调用,从这里开始可以通过 ReactDOM.findDOMNode(this) 获取到组件的 DOM 节点。
    componentDidMount() {
        //添加事件订阅,额外的DOM处理
    };
     
    // 通过改变props或state来驱动视图的更改,会触发以下钩子
    componentWillReceiveProps();
    // 在react中这是一个性能优化的关键点,当父组件改变,全部子组件都会重新渲染,可以通过该钩子返回false来阻止渲染,此处还有另外一个方法pureComponent
    shouldComponentUpdate(nextProps, nextState){
        //return boolean
    };
    // 类似Vue的beforeUpdate
    componentWillUpdate();
    
    render();
    
    // 类似Vue的updated 
    componentDidUpdate();
    
    // 类似Vue的beforeDestroy,组件销毁之前被调用,在此钩子中,出于性能的考虑需移除在componentDidMount添加的事件订阅,网络请求等。
    componentWillUnmount() {
        //移除在componentDidMount添加的事件订阅,网络请求等
    };

}

总结:

  • 在Vue中,state对象并不是必须的,数据由data属性在Vue对象中进行管理。大型应用的状态管理框架有Vuex。
  • 而在React中是state驱动视图概念,对应的有setState()方法去更新状态,类似的状态管理框架有redux等。

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VueReact是两个常用的前端框架,它们都有自己的生命周期函数用于管理组件的创建、更新和销毁过程。 Vue生命周期函数包括初始化、创建、挂载、更新和销毁等几个阶段。具体来说,Vue生命周期函数按照顺序包括: 1. beforeCreate:在实例初始化之后,数据观测 (data observer) 和 event/watcher 事件配置之前调用。 2. created:在实例创建完成后调用,此时实例已经完成了数据观测 (data observer),属性和方法的运算,watch/event 事件回调。但是还未开始DOM编译。 3. beforeMount:在挂载开始之前被调用,此时尚未生成真实的DOM节点。 4. mounted:在挂载完成后被调用,此时组件已经生成了对应的真实DOM节点,可以对DOM进行操作。 5. beforeUpdate:在数据更新之前被调用,可以在这个钩子里进行更新前的操作。 6. updated:在数据更新完成后被调用,可以在这个钩子里进行更新后的操作。 7. beforeDestroy:在实例销毁之前调用,可以在这个钩子里进行一些清理工作。 8. destroyed:在实例销毁之后调用,此时实例中的所有指令及事件监听器都已经被移除。 React生命周期函数则有一些不同,主要包括: 1. constructor:在组件被创建时调用,用于初始化状态和绑定事件处理方法。 2. render:用于渲染组件的内容,返回一个React元素。 3. componentDidMount:在组件挂载到DOM后调用,可以进行一些需要DOM操作的初始化工作。 4. componentDidUpdate:在组件更新后被调用,可以进行一些需要DOM操作的更新工作。 5. componentWillUnmount:在组件即将从DOM中移除时调用,可以进行一些清理工作。 在新版本的React中,还引入了一些新的生命周期函数,比如getDerivedStateFromProps和getSnapshotBeforeUpdate,用于实现一些额外的功能。 总结一下,VueReact生命周期函数在创建、更新和销毁的过程中有所不同,同时React还引入了一些新的生命周期函数。了解这些生命周期函数的执行顺序和用途可以帮助我们更好地管理和控制组件的行为。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值