vue 组件数据加载解析顺序的详细代码
更新时间:2024年03月01日 09:39:23 作者:英俊潇洒美少年
Vue.js的解析顺序可以概括为:模板编译、组件创建、数据渲染、事件处理和生命周期钩子函数执行,接下来通过本文给大家介绍vue 组件数据加载解析顺序的完整代码,感兴趣的朋友跟随小编一起看看吧
组件数据加载解析顺序
实例初始化完成、props 解析 -> beforeCreate -> 响应式数据、计算属性、方法和侦听器设置完成 -> created -> 判断是否有渲染模版 -> beforeMount -> 组件挂载 -> mounted
- created之前,响应式数据、计算属性、方法和侦听器设置完成,但是方法、计算属性并不会执行,没有immediate: true的侦听器也不会执行;
- 只有用到计算属性时,才会去执行计算属性的方法
- 组件内外部使用push,$set,不修改原数组对象,会使得watch中的newValue等于oldValue,JSON.stringify(newValue) === JSON.stringify(oldValue)
- watch加了immediate: true,先执行响应式数据初始化,立即触发watch后,走到created生命周期。
- 侦听器依次设置时,immediate: true的立即执行,执行后再继续设置其他的侦听器,也就是说,当immediate立即执行的监听,当某些数据变更后,如果侦听器还没有设置,就不会执行
- 没有immediate: true,的watch,触发时机是晚于created、mounted的,当数据再次发生变化后,beforeUpdate之前执行;
- watch加了immediate: true,可以监听到响应式数据初始化后的变化。
- 不要在选项 property 或回调上使用箭头函数,比如 created: () => console.log(this.a) 或 vm.$watch(‘a’, newValue => this.myMethod())。因为箭头函数并没有 this,this 会作为变量一直向上级词法作用域查找,直至找到为止,经常导致 Uncaught TypeError: Cannot read property of undefined 或 Uncaught TypeError: this.myMethod is not a function 之类的错误。
import Vue from "vue"; new Vue({ el: "#app", template: `<div> <div>{{computedCount}}</div> </div>`, data() { return { count: 1, } }, watch: { count: { handler() { console.log('watch'); }, immediate: true, } }, computed: { computedCount() { console.log('computed'); return this.count + 1; } }, created() { console.log('created'); }, mounted() { console.log('mounted'); }, }); watch -> created -> computed -> mounted new Vue({ el: "#app", template: `<div> <div></div> </div>`, data() { return { count: 1, } }, watch: { count: { handler() { console.log('watch'); }, immediate: true, } }, computed: { computedCount() { console.log('computed'); return this.count + 1; } }, created() { console.log('created'); }, mounted() { console.log('mounted'); }, }); watch -> created -> mounted new Vue({ el: "#app", template: `<div> <div></div> </div>`, data() { return { count: 1, } }, watch: { count: { handler() { console.log('watch'); }, immediate: true, } }, computed: { computedCount() { console.log('computed'); return this.count + 1; } }, created() { console.log('created'); }, mounted() { console.log('mounted'); this.computedCount }, }); watch -> created -> mounted -> computed
到此这篇关于vue 组件数据加载解析顺序的文章就介绍到这了,更多相关vue 组件数据加载内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
利用Vue-draggable组件实现Vue项目中表格内容的拖拽排序
这篇文章主要介绍了利用Vue-draggable组件实现Vue项目中表格内容的拖拽排序,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2019-06-06vue eslint报错:Component name “xxxxx“ should always be
新手在使用脚手架时总会报各种错,下面这篇文章主要给大家介绍了关于vue eslint报错:Component name “xxxxx“ should always be multi-word.eslintvue的4种解决方案,需要的朋友可以参考下2022-07-07
最新评论