• 🍖Vue 生命期钩子


    一.Vue 生命周期图示

    下图展示了实例的生命周期。你不需要立马弄明白所有的东西,不过随着你的不断学习和使用,它的参考价值会越来越高。

    Vue 实例生命周期

    二.生命周期钩子函数作用

    • 每个Vue对象在创建时都要经过一系列的初始化过程

    • 在这个过程中 Vue.js 会自动运行一些叫做生命周期的的钩子函数

    • 我们可以使用这些函数, 在对象创建的不同阶段加上我们需要的代码, 实现特定的功能

    三.八种生命周期钩子函数

    钩子函数 说明
    beforeCreate 创建Vue实例之前调用
    created 创建Vue实例成功后调用(可以在此处发送异步请求后端数据)
    beforeMount 渲染DOM之前调用
    mounted(使用最多) 渲染DOM之后调用
    beforeUpdate 重新渲染之前调用(数据更新等操作时,控制DOM重新渲染)
    updated 重新渲染完成之后调用
    beforeDestroy 销毁之前调用
    destroyed 销毁之后调用
    • create 示例
    var vm = new Vue()  // 创建一个vue实例
    
    • mount 示例
    <!--指的是将标签挂载到组件中-->
    <div id="box"></div>
    
    <script>
        var vm = new Vue({
            el: '#box',
            data: {},
        })
    </script>
    
    • update 示例
    <!--指的是修改标签内某个属性或变量的值-->
    <div id="box">
        <p v-show="isShow">Hello Vue!</p>
    </div>
    
    <script>
        var vm = new Vue({
            el: '#box',
            data: {
                isShow: true,  // 修改这个内容
            },
        })
    </script>
    

    四.测试代码

    • 代码测试
    
    
    
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
        <link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet">
        <script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
        <script src="https://cdn.jsdelivr.net/npm/vue@2.6.12"></script>
    
    
    
    <div class="container-fluid">
        <div class="row">
            <div class="col-md-6 col-md-offset-3" style="margin-top: 20px">
                <div id="app">
                    You can cry,But you can not lose! --{{name}}
                </div>
            </div>
        </div>
    </div>
    
    
    
    <script>
    
        var vm = new Vue({
            el: '#app',
            data: {
                name: 'shawn'
            },
            methods: {},
    
            beforeCreate() {
                console.log('当前状态:创建Vue对象之前,beforeCreate')
            },
    
            created() {
                console.log('当前状态:Vue示例已经创建好了,created')
            },
    
            beforeMount() {
                console.log('当前状态:挂在div之前,beforeMount')
    
            },
    
            //用的最多,向后端加载数据,创建定时器等
            mounted() {
                console.log('当前状态:div已经被挂在到组件内,mounted')
    
                //挂载,三秒后执行一个任务
                // setTimeout(()=> {
                //     console.log('lqz is nb')
                // },3000)
                // 每2秒执行一个任务
                this.t = setInterval(function () {
                    console.log('我正在每两秒执行一次')
                }, 2000)
            },
    
            beforeUpdate() {
                console.log('当前状态:数据更新,DOM重新渲染之前,beforeUpdate')
            },
    
            updated() {
                console.log('当前状态:DOM渲染完成了,updated')
            },
    
            beforeDestroy() {
                console.log('当前状态:销毁之前,beforeDestroy')
            },
    
            destroyed() {
                console.log('当前状态:销毁之后(看不到)destroyed')
                clearInterval(this.t)
                this.t = null
                console.log('destoryed')
            },
        })
    </script>
    
    
    • 展示

    钩子函数i

  • 相关阅读:
    mybatis 插件的原理-责任链和动态代理的体现
    优雅的对象转换解决方案-MapStruct使用进阶(二)
    将博客搬至CSDN
    python headers missing
    Gvim:unable to load python
    gvim keil 快捷跳转至出现错误(警告)行
    stm32 堆溢出
    keil在线烧录突然提示 No target connected #
    cygwin vim can't write .viminfo
    切换用户后,/etc/profile的配置不起效
  • 原文地址:https://www.cnblogs.com/songhaixing/p/14730482.html
Copyright © 2020-2023  润新知