Vue 生命周期

一. Vue 生命周期图

1. 官方原图

在这里插入图片描述
该图是官方给出的生命周期图,下图是老刘画的图

2. 大神原图

在这里插入图片描述

二. Vue 生命周期

钩子函数描述
beforeCreate创建Vue实例之前调用
created创建Vue实例成功后调用(可以在此处发送异步请求后端数据)
beforeMount渲染DOM之前调用
mounted渲染DOM之后调用
beforeUpdate重新渲染之前调用(数据更新等操作时,控制DOM重新渲染)
updated重新渲染完成之后调用
beforeDestroy销毁之前调用
destroyed销毁之后调用

create

let vm = new Vue()

mount

挂载,把div挂载到组件中

在这里插入图片描述

update

let vm = new Vue({
    el: '#box',
    data: {
        isShow: true    // 修改这个内容
    },
    methods: {
        handleClick() {
            console.log('我是根组件')
        }
    }
})

1.bedoreCreate

2.created

这个用的多,只要创建,data变量就初始化完成了,一般是从后端获取到的,在此处发送ajax请求

3.beforeMount

4.mounted

5.beforeUpdate

6.updated

7.beforeDestroy

8.destroyed

组件销毁 - 给组件写一个定时器

setTimeout()     // 延迟3s干什么事
setInterval()    // 延迟3s干什么事

三. 测试代码

这里使用简易组件测试。

<div id="app">
    <button @click="handleShow">点我组件显示和消失</button>
    <Child v-if="show"></Child>

</div>


<script>
    // 创建一个组件
    Vue.component('Child', {
        template: `
          <div>
          <h1>{{ name }}</h1>
          <button @click="handleClick">点我</button>
          </div>
        `,
        data() {
            return {
                name: 'xwx',
                t: '',
            }
        },
        methods: {
            handleClick() {
                alert('xwx')
            }
        },
        beforeCreate() {
            console.log('组件创建之前执行 beforeCreate')
        },
        created() {
            console.log('组件创建成功后执行 created')
            // 延迟任务,延迟几秒执行某个函数
            // setTimeout(()=>{
            //     alert('lqz is handsome')
            // },3000)

            // 定时任务,每隔几秒,执行一次
            this.t = setInterval(() => {
                console.log('3s结束了')
            }, 3000)
        },
        beforeMount() {
            console.log('渲染之前调用 beforeMount')
        },
        mounted() {
            console.log('渲染之后调用 mounted')
        },
        beforeUpdate() {
            console.log('重新渲染前调用 beforeUpdate')
        },
        updated() {
            console.log('重新渲染后调用 updated')
        },
        beforeDestroy() {
            console.log('销毁之前调用 beforeDestroy')
            clearInterval(this.t)
            this.t = null
        },
        destroyed() {
            console.log('销毁之后调用 destroyed')
        }

    })


    new Vue({
        el: '#app',
        data: {
            show: false,
        },
        methods: {
            handleShow() {
                this.show = !this.show
            }
        }
    })

</script>

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值