Vue.js 文档描述了 created
和 mounted
事件,如下所示:
created
创建实例后同步调用。在这个阶段,实例已经完成了对选项的处理,这意味着已经设置了以下内容:数据观察、计算属性、方法、监视/事件回调。但是,安装阶段尚未开始,$el 属性将不可用。
mounted
在实例刚刚挂载后调用,其中 el 被新创建的 vm.$el 替换。如果根实例挂载到文档内元素,则调用 mount 时 vm.$el 也将在文档内。在服务器端渲染期间不会调用此挂钩。
我理解这个理论,但我有两个关于实践的问题:
是否有任何情况下 created 会被过度安装使用?在现实生活(真实代码)情况下,我可以将创建的事件用于什么?
created
被较早调用,因此触发从 API 后端获取数据是有意义的。
created()
来调度 api 调用的动作。
created()
:由于选项的处理已完成,您可以访问响应式 data
属性并根据需要更改它们。在这个阶段 DOM 尚未安装或添加。所以你不能在这里做任何 DOM 操作
mounted()
:在 DOM 安装或渲染后调用。在这里,您可以访问 DOM 元素并且可以执行 DOM 操作,例如获取 innerHTML:
console.log(element.innerHTML)
所以你的问题:
是否有任何情况下 created 会被过度安装使用?
Created 通常用于从后端 API 获取数据并将其设置为数据属性。但是在 SSR mounted()
钩子中不存在,您需要执行任务,例如在创建的钩子中获取数据
在现实生活(真实代码)情况下,我可以将创建的事件用于什么?
用于从外部 API 获取要呈现的任何初始所需数据(如 JSON)并将其分配给任何反应性数据属性
data:{
myJson : null,
errors: null
},
created(){
//pseudo code
database.get().then((res) => {
this.myJson = res.data;
}).catch((err) => {
this.errors = err;
});
}
对于 created() 钩子,在浏览器中操作后的数据在安装之前未显示在 DOM 中。简而言之,数据需要时间来操作浏览器看到的 DOm。
Mounted() 钩子在 DOM 被挂载或渲染后调用,这使您能够访问 DOM 元素并且可以执行 DOM 操作。mounted 钩子的最佳用途是如果您需要在之前或之前立即访问 DOM在初始渲染之后。
created
钩子。但是created
仅在实例化到期对象时调用一次。