zoukankan      html  css  js  c++  java
  • vue的生命周期钩子

    生命周期过程:

    new vue() :vue实例进行初始化,读取所有生命周期函数,并没有执行(不会调用)

    beforeCreate():创建前,读取属性,计算属性,添加set/get,读取watch

    created() : 创建完成,可以操作数据(ajax),判断是否有el配置/被调用了$mount(),判断是否存在el配置/$mount作用的dom结构

    beforeMount() : 将dom结构读取出来,渲染dom结构(挂载的过程)

    mounted() : 可以操作dom了,可以使用ref了

    跟用户交互、操作数据,在vue工作期间发生了数据变化,数据变化导致dom需要重新渲染,下面两个更新生命周期的方法指的是dom的更新:

    beforeUpdate() 

    updated() 

    直到执行了$destory(),或者dom结构不在了,vue实例就会销毁

    beforeDestory()

    distoryed()

    vm.$mount() : 挂载vm实例(vm实例作用在dom结构上)

    vm.$destory() : 销毁实例和dom的关联,不提倡手动调用$destory

             var vm = new Vue({
                     el: '#app',
                     data: {
                          msg: 'hello world',
                          arr: ['item1', 'item2', 'item3'],
                          obj: {
                              name: 'zhangsan'
                          }
                     },
                     computed: {
                          len(){
                              return this.msg.length;
                          }
                     },
                     watch: {
                          msg(newVal, oldVal){
                              console.log('监听到了msg的变化');
                         },
                          arr(){
                              console.log('监听到了arr的变化');
                          }
                     },
                     methods: {
                          test(){
                              console.log('test执行了');
                          },
                          btnAction(){
                              this.$destroy();
                          },
                          btn2Action(){
                              //强制更新dom
                              this.$forceUpdate();
                          },
                          btn3Action(){
                              this.msg = 'hello vue';
                          },
                          btn4Action(){
                              this.arr.push('item4');
                              //监听一个属性发生变化导致的dom的更新。
                              //写$nextTick要求是,数据变化后的代码紧接着写$nextTick
                              this.$nextTick(()=>{
                                   console.log('dom也变化了');
                              });
                          }
                     },
                     //生命周期函数
                     //创建前
                     beforeCreate(){
                         console.log('beforeCreate.....');
                          console.log(this.msg);
                     },
                     //创建完成,ajax,操作数据
                     created(){
                          console.log('created....');
                          console.log(this.len);
                          this.test();
                     },
                     beforeMount(){
                         console.log('beforeMount....');
                         console.log(this.$refs);
                     },
                     mounted(){
                          console.log('mounted....');
                         console.log(this.$refs);
                     },
                     beforeUpdate(){
                         console.log('beforeUpdate....');
                     },
                     updated(){
                          console.log('updated....');
                     },
                     beforeDestroy(){
                         console.log('beforeDestroy....');
                     },
                     destroyed(){
                          console.log('destroyed....');
                     }
                 })
                     
    

      

  • 相关阅读:
    你不能忽视的HTML代码2精编篇
    C#中析构函数和命名空间的妙用
    值类型和引用类型及其它
    这些年我收集的GDI+代码2
    C#中超级好用的字符串
    Javascript的压缩优化
    Spring和hibernate多个数据源的事务管理
    android中Handler,Looper,Message的开发答疑
    Spring引用Tomcat的 JTA事务
    js禁止用户刷新页面
  • 原文地址:https://www.cnblogs.com/xgs123/p/9039589.html
Copyright © 2011-2022 走看看