Vue中创建和安装的区别(附实例)

103 阅读2分钟

Vue中Created和Mounted的区别

Mounted和Created听起来很相似,但它们做的是不同的事情。让我们来研究一下。

在之前的文章中,我介绍了Vue中所有不同的生命周期钩子。在谈论生命周期钩子的时候,大多数人都会感到困惑,其中一个问题是createdmounted 之间的区别。它们都有类似的名字,而且感觉它们应该做同样的事情,但有一些微妙的区别。

Vue中Created和Mounted之间的区别

首先,created()mounted() 都可以访问你原型上的数据和道具。例如,这两个钩子都会在下面控制台记录 "我的信息",以及myProp 的默认值,即 "某个道具"。

Vue.js组件

export default {
    data() {
        return {
            msg: 'My Message'
        }
    },
    props: {
        myProp: {
            type: String,
            default: 'My Prop'
        }
    },
    created() {
        console.log(this.msg);
        console.log(this.myProp);
    },
    mounted() {
        console.log(this.msg);        
        console.log(this.myProp);
    }
}

创建和挂载的道具继承

注意:即使你设置了一个属性,它仍然可以在created()mounted()

created()mounted()根本区别在于,你还不能访问created() 的DOM。在我们的例子中,如果我们试图引用this.$el ,它将在created() 中返回null ,它将在mounted() 中返回DOM元素。

Vue.js组件

export default {
    created() {
        // Returns null
        console.log(this.$el);
    },
    mounted() {
        // Returns the DOM element in console:
        console.log(this.$el);     
    }
}

因此,任何DOM操作,甚至是使用querySelector 等方法获得DOM结构,都不会在created() 。正如在关于生命周期钩子的文章中提到的,created() 很适合调用API,而mounted() 则适合在DOM元素完全加载后做任何事情。

组成API和创建或挂载

有一点需要注意的是,如果你使用的是Composition API,created() ,甚至是beforeCreated() ,都不再存在。你必须使用setup() 。这个函数取代了created()beforeCreated() 。因此,DOM仍然不能在setup() 。组成APImounted() 保持不变。

API 钩子 原型 控制台(视频游戏 CLI) 数据(计算) 元素 继承(面向对象编程) 属性(编程)

经Johnny Simpson, DZone MVB许可发表于DZone。请看原文。