zoukankan      html  css  js  c++  java
  • 生命周期(vue)

      代码和人一样都是有自己的周期的,只有好好的了解代码的周期才可以更好的完成项目开发,今天我们来讲讲vue中提到的"生命周期"和"生命周期钩子".

    第一步我们来了解一下她俩的含义

      a.生命周期:vue实例从创建到销毁过程中发生的一系列的状态

      b.生命周期钩子:钩子的作用是提供给用户在不同阶段添加自己的代码的机会

    第二步我们来看看vue官网中关于"生命周期钩子"的选项有哪些?如下图(官网:https://cn.vuejs.org/v2/api/#beforeCreate)

    第三步我们来了解并解释一下官网的生命周期流程图.如图(https://cn.vuejs.org/v2/guide/instance.html#%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E5%9B%BE%E7%A4%BA)

      a.初始化vue实例

      b.初始化事件和读取生命周期函数

      c.beforeCreate()....这个时候你什么都获取不了,数据和dom也操作不了

      d.读取data,computed,watch,methods....以及属性的监听,数据观测(data observer),属性和方法的运算等

      e.created().....这个时候就可以操作属性和方法了

      f.判断是否有el配置项,如果没有就判断是否执行了$mont()(注释:$mount("#app")叫动态挂载,等价于配置项中的el:#app),若两者都没有的话就不再往下执行了

      g.判断是否有template,如果有,就将template渲染到el上,没有就执行render

     

      h.beforeMount()...这个时候还没有获取到dom,不可以操作dom

      i.mounted()...这个时候你就可以操作dom了(操作dom结构的方式不建议使用document,采用ref)

      数据发生变化后

       dom更新的流程

      j.beforeUpdate()....数据以经更新但是dom没有重新渲染,如果获取页面中的数据还是原来的值

      k.updated()....数据和dom以及更新,打补丁完成(这个时候就可以重新计算滚动条的长度,轮播图中的页面数量等)

      销毁

      l.beforeDestroy()

      m.Vue 实例指示的所有东西都会解绑,所有的事件监听会被移出,所有的子实例也会被销毁.

      n.destroyed()

      附录,vue.js需要自己去官网下载

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
    
    
        <div id="app">
    
    
            <!--  在vue的作用范围内的标签的唯一标识符  -->
            <p ref="p1">{{message}}</p>
            <p ref="p2">{{message}}</p>
            <p ref="p3">{{message}}</p>
            <p ref="p4">{{message}}</p>
            <p ref="p5">{{title}}</p>
    
            <p><input type="text" v-model="message"></p>
            <button @click="print()">按钮</button>
    
            <div class="box" v-if="isShow"></div>
    
        </div>
    
    
        <div id="app2">
    
            <p>{{message}}</p>
            <p><input type="text" v-model="message"></p>
            <button @click="print()">按钮</button>
    
        </div>
    
        <script src="vue.js"></script>
    
        <script>
        // 生命周期:vue实例从创建到销毁发生的一系列的状态
        // 生命周期钩子:钩子的作用给用户在不同阶段添加自己的代码的机会。
        // 创建
        var vm = new Vue({
            // el: '#app',
            data: {
                message: 'hello vue',
                title: '',
                isShow: true
            },
            methods: {
                print(){
                    console.log(this.message);
                }
            },
    
            // 生命周期钩子/生命周期函数/钩子函数
            beforeCreate(){
                console.log('beforeCreate--------------------------------');
                //无效:
                // console.log(this.message);
                // this.print();
            },
            created(){
                console.log('created--------------------------------');
                //可以使用属性和方法等了
                // console.log(this.message);
                // this.print();
    
            },
            beforeMount(){
                console.log('beforeMount--------------------------------');
                console.log(document.querySelector('p').innerText);
    
                console.log(this.$refs);
    
            },
            mounted(){
                console.log('mounted--------------------------------');
                console.log(document.querySelector('p').innerText);
    
                console.log(this.$refs);
                console.log(this.$refs.p1.innerText);
    
            },
            beforeUpdate(){
                console.log('beforeUpdate--------------------------------');
                console.log(this.message);
                console.log(this.$refs.p1.innerText);
            },
            updated(){
                console.log('updated--------------------------------');
                console.log(this.message);
                console.log(this.$refs.p1.innerText);
            },
            beforeDestroy(){
                console.log('beforeDestroy--------------------------------');
            },
            destroyed(){
                console.log('destroyed');
            },
            //捕获子组件的异常
            // errorCaptured(){
            //     console.log('errorCaptured');
            // }
        })
  • 相关阅读:
    HDU 5251 矩形面积 (旋转卡壳)
    洛谷 P3187 BZOJ 1185 [HNOI2007]最小矩形覆盖 (旋转卡壳)
    2019 杭电多校 第十场
    2019 杭电多校 第八场
    2019 杭电多校 第九场
    2019 杭电多校 第七场
    2019 杭电多校 第六场
    2019 杭电多校 第五场
    2019 杭电多校 第四场
    2019 杭电多校 第三场
  • 原文地址:https://www.cnblogs.com/tc-jieke/p/9265110.html
Copyright © 2011-2022 走看看