• Vue 生命周期的钩子函数


    “夫春生夏长,秋收冬藏,此天道之大经也。弗顺则无以为天下纲纪”。宇宙万物皆有它自身的一套运作机制,适时而动,因势利导。在 Vue 的 世界里,也有它自身的"春夏秋冬"......

    每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM 等。同时在这个过程中也会运行一些叫做生命周期钩子的函数,这给了用户在不同阶段添加自己的代码的机会。

    今天先来总结一下 Vue 生命周期中的四个钩子。

    beforeCreate

    找不到data, methods 方法不可用,$el 属性不可见, DOM未渲染成功

    在实例初始化之后,数据观测和 event/watcher 事件配置之前被调用。

    由于此阶段未能进行数据观测,所以页面依然输出:hello vue, I am Edward

    created

    获取data,methods可用

    在这一步,实例已完成数据观测,属性和方法的运算, event/watcher 事件回调。

    在实例创建完成后,模板渲染成html前调用,通常初始化某些属性值。

    此时页面输出:changed in created 

    beforeMount

    获取data,methods可用,$el 可打印但未挂载到实例

    在挂载开始之前被调用,相关的渲染函数首次被调用,处于准备挂载的阶段。

    mounted

    el 被新创建的 vm.$el 替换,实例挂载成功,DOM渲染成功

    在模板渲染成html后调用,通常是初始化页面完成后,再对html的dom节点进行一些需要的操作。

    [ 代码 ]:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>生命周期</title>
    </head>
    <body>
    
        <div id="app">
           <p id="testDom">  {{ msg }}  </p>
        </div>  
        
    </body>
    <script src="./vue.js"></script>
    <script>
    
    let vm = new Vue({
        el:'#app',
        data: {
            msg: 'hello vue, I am Edward'
        },
        methods: {
            showSomething () {
                console.log('方法已被触发')
                console.log('---------------')
            }
        },
        beforeCreate () {
            console.log('beforeCreate')
            console.log('this.$el  ',this.$el)
            console.log('DOM       ',document.getElementById('testDom'))
            console.log('data      ',this.msg)
            this.showSomething()
        },
        created () {
            console.log('created')
            console.log('this.$el  ',this.$el)
            console.log('DOM       ',document.getElementById('testDom'))
            console.log('data      ',this.msg)
            this.showSomething()
        },
        beforeMount () {
            console.log('beforeMount')
            console.log('this.$el  ',this.$el)
            console.log('DOM       ',document.getElementById('testDom'))
            console.log('data      ',this.msg)
            this.showSomething()
        },
        mounted () {
            console.log('mounted')
            console.log('this.$el  ',this.$el)
            console.log('DOM       ',document.getElementById('testDom'))
            console.log('data      ',this.msg)
            this.showSomething()
        }
    })
    
    
    
    </script>
    </html>

    控制台输出如下:

  • 相关阅读:
    JournalNode的作用
    mysql57重新安装后无法再次启动mysql57服务“本地计算机上的MySQL服务启动后停止。某些服务在未由其他服务或程序使用时将自动。”--解决方法
    oracle基础语法
    MYSQL 8.0.11 安装过程及 Navicat 链接时遇到的问题
    MySQL 字符串函数:字符串截取
    java基础总结
    mysql 排名
    mysql——查询重复数据,及删除重复数据只保留一条数据
    松软科技课堂:jQuery 效果
    松软科技课堂:jQuery 效果
  • 原文地址:https://www.cnblogs.com/edwardwzw/p/12124280.html
Copyright © 2020-2023  润新知