类似于微信小程序的生命周期,例如当页面加载时需要自动发起axios数据请求,然后渲染页面,而不是像上一篇一样点击按钮之后才会加载内容。

官方文档:
https://v3.cn.vuejs.org/guide/instance.html#%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E9%92%A9%E5%AD%90

1600375-20190616215612772-1442218512.png

生命函数的执行顺序

从上方的流程图中可以了解生命周期都是有顺序执行的,如以下代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="js/vue.js"></script>
</head>
<body>
    <div id="app">

    </div>
</body>
</html>
<script>
    new Vue({
        el:"#app",
        data:{
            title:"冒险岛"
        },
        methods:{
    
        },
        created(){  // 创建created生命周期函数,该函数经常使用
            console.log("调用created函数")
        },
        beforeCreate(){  // 创建beforeCreate生命周期函数
            console.log("调用beforecreate函数")
        },

        mounted(){
            console.log("调用mounted函数")
        }
    })
</script>
  • 25-34行调用了3个生命周期函数,分别是created、beforecreated、mounted,根据流程图中规定的执行顺序,生命周期函数会按照规定的顺序执行,而不是按照位置顺序执行。

测试页面:
image.png
可以成功验证生命周期函数不会因为位置顺序而改变执行顺序。

常用的生命周期介绍

常用的生命周期函数主要是created和mounted,下面着重介绍这两个生命周期。

created

created生命周期主要是初始化Vue示例的data数据和methods方法,所以初始化首页数据的ajax请求应该在created函数中去执行。

注意这个时候页面还没有渲染完成,DOM结构也没有渲染完成,所以在created生命周期中去获取页面中属性绑定的{{}}值时是无法获取到真实值的,只能获取到js的变量名。

mounted

mounted生命周期执行时,标志了页面的首次渲染完成,并且可以通过操作DOM对象来获取{{}}中的值,可以给其他三方UI组件初始化使用,所以调用页面中的{{}}值需要在mounted中来进行。

created和mounted对比

结合上面对created和mounted介绍,现在对这两个生命周期做一个实践对比。

代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="js/vue.js"></script>
</head>
<body>
    <div id="app">
        <div id="out">{{title}}</div>
    </div>
</body>
</html>
<script>
    new Vue({
        el:"#app",
        data:{
            title:"冒险岛"
        },
        methods:{
    
        },
        created(){  // 创建created生命周期函数,该函数经常使用
            console.log("调用created")
            var out=document.getElementById("out")
            console.log(out)
        },
        mounted(){
            console.log("调用mounted函数")
            var out=document.getElementById("out")
            console.log(out)
        }
    })
</script>

测试页面控制台:
image.png

可以发现在created生命周期中,data中的数据还没被编译到页面中去,而在mounted生命周期时页面首次渲染完成可以从页面中获取data数据。

最后修改:2024 年 03 月 13 日
如果觉得我的文章对你有用,请随意赞赏