Vue生命周期

Posted zzr-stdio

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue生命周期相关的知识,希望对你有一定的参考价值。

Vue生命周期

参考vue生命周期
技术分享图片
这是Vue文档里关于实例生命周期的解释图
进行测试一下
测试代码如下:

<!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>Document</title>
    <script src="https://unpkg.com/vue/dist/vue.js"></script>
</head>
<body>
    <div id="app">
        {{data}}
    </div>
    <script>
        var app = new Vue({
            el: "#app",
            data: {
                data: "这是测试",
                info: "none"
            },
            beforeCreate() {
                console.log("创建前=======");
                console.log(this.data);
                console.log(this.$el);
                console.log("这是一条分割线==========");
            },
            created() {
                console.log("已创建=========");
                console.log(this.data);
                console.log(this.$el);
                console.log("这是一条分割线==========");
            },
            beforeMount() {
                console.log("mount之前==========");
                console.log(this.info);
                console.log(this.$el);
                console.log("这是一条分割线==========");
            },
            mounted() {
                console.log("mounted======");
                console.log(this.info);
                console.log(this.$el);
                console.log("这是一条分割线==========");
            },
            beforeUpdate() {
                console.log("更新前=========");
                console.log("这是一条分割线==========");
            },
            updated() {
                console.log("更新完成=======");
                console.log("这是一条分割线==========");
            },
            beforeDestroy() {
                console.log("销毁前========");
                console.log(this.info);
                console.log(this.$el);
                console.log("这是一条分割线==========");
            },
            destroyed() {
                console.log("已销毁=========");
                console.log(this.info);
                console.log(this.$el);
                console.log("这是一条分割线==========");
            },
        })
    </script>
</body>
</html>

结果图:
技术分享图片
由图可知:

  1. beforeCreate此时$el,data的值都为undefined
  2. 创建之后,此时可以拿到data的值,但是$el依旧为undefined
  3. mount之前,$el的值为"虚拟"的元素节点
  4. mount之后,mounted之前,"虚拟"的dom节点被真是的dom节点替换,并将其插入到dom树中,于是在出发mounted时,可以获取到(el为真实的dom元素 app.)el === document.getElementById("app")//true

继续,现在修改data的值,更新视图:
技术分享图片
触发了beforeUpdate和updated
接着,继续执行销毁app.$destroy()
技术分享图片
总结一下,简化后的图为:
技术分享图片













以上是关于Vue生命周期的主要内容,如果未能解决你的问题,请参考以下文章

Android片段生命周期:onResume调用了两次

在不存在的片段上调用片段生命周期和 onCreate 的问题

导航上的片段生命周期重叠

Android 片段生命周期

关于片段生命周期,何时调用片段的 onActivityResult?

理解片段事务期间片段的生命周期方法调用