欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

关于Vue生命周期的实例讲解

程序员文章站 2023-11-02 16:01:40
一、生命周期 vue 应用都是通过 vue 实例(viewmodel)完成的,vue 创建实例需要一系列的初始化动作,需要设置数据监听、编译模板、将实例挂载到 dom 并在数据变...

一、生命周期

vue 应用都是通过 vue 实例(viewmodel)完成的,vue 创建实例需要一系列的初始化动作,需要设置数据监听、编译模板、将实例挂载到 dom 并在数据变化时更新 dom 等。当然创建实例只是生命周期的一部分。

在 vue 对象声明周期的每个阶段都会运行一些叫生命周期的钩子函数,在对应的钩子函数中,可以添加自己的代码以达到某种特定的功能。

钩子函数:

beforecreate:vue 实例初始化之后执行,但是此时 vue 实例数据与 el 数据都为空

created:vue 实例中的数据已经绑定,但是 el 为空

beforemount:在 el 挂载之前执行

mounted:此时 el 已经被挂载到指定的 dom 节点

beforeupdate:vue 实例数据更新之后执行,但是页面中的数据并没有更新

updated:页面数据更新之后执行

beforedestroy:vue 实例销毁之前执行

destroyed:实例销毁之后执行

二、代码演示

我们通过对应的钩子函数来说明 vue 对象的生命周期,你可以拷贝下面的代码,在控制台观察运行结果

html 代码

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>vue实例_生命周期</title>
</head>
<body>
<p id="test">
    <p>更新次数:{{count}}</p>
    <button @click="destroyvue">destory vue</button>
</p>
</body>
</html>

vue.js 代码

<!-- 引入本地的 vue.js -->
<script type="text/javascript" src="../js/vue.js"></script>
<script type="text/javascript">
    new vue({
        el: '#test',
        data: {
            count: 0
        },

        beforecreate() {
            console.log('beforecreate()')
        },

        created() {
            console.log('created()')
        },

        beforemount() {
            console.log('beforemount()')
        },

        // 在挂载之后执行一个定时任务,不断地显示与隐藏 'hello vue.js'
        mounted() {
            console.log('mounted()')
            this.intervalid = setinterval(() => {
                // 更新 'count',触发 beforeupdate() 与 updsted()
                this.count ++
            }, 1000)
        },

         beforeupdate() {
            console.log('beforeupdate() ' + this.count)
        },

        updated () {
            console.log('updated() ' + this.count)
        },

        // 在对象销毁之前,清除定时任务
        beforedestroy() {
            console.log('beforedestroy()')
            clearinterval(this.intervalid)
        },

        destroyed() {
            console.log('destroyed()')
        },

        // 给按钮绑定一个事件:销毁当前 vue 对象
        methods: {
            destroyvue () {
                this.$destroy()
            }
        }
    })

</script>

ps:

常用的钩子函数:

mounted():用于发送 ajax 请求,启动定时任务等 beforedestory():做一些收尾工作,用于清除定时任务等