每一个vue实例从创建到销毁的过程,就是这个vue实例的生命周期。在这个过程中,他经历了从开始创建、初始化数据、编译模板、挂载Dom、渲染→更新→渲染、卸载等一系列过程。
将要创建 ===>调用beforeCreate函数
创建完毕 ===>调用created函数
将要挂载 ===>调用beforeMount函数
挂载完毕 ===>调用mounted函数
将要更新 ===>调用beforeUpdate函数
更新完毕 ===>调用updated函数
将要销毁 ===>调用beforeDestory函数
销毁完毕 ===>调用destroyed函数
第一次页面加载时会触发 beforeCreate, created, beforeMount, mounted 这几个钩子
DOM 渲染在 mounted 中就已经完成了。
beforecreate : 可以在这加个loading事件,在加载实例时触发
created : 初始化完成时的事件写在这⾥,如在这结束loading事件,异步请求也适宜在这⾥调⽤
mounted : 挂载元素,获取到DOM节点
updated : 如果对数据统⼀处理,在这⾥写上相应函数
beforeDestroy : 可以做⼀个确认停⽌事件的确认框
nextTick : 更新数据后⽴即操作dom
组件之间通信主要分为三种:父子传参,子父传参,兄弟传参。
父子传参:父组件通过自定义属性的方式传参,通过props属性给子组件传参,子组件通过props属性去接收参数。
子:progress
父页面引用:
在父组件中定义
在方法里赋值,然后以StepInfo参数,传递到组件中,进而铺数据到页面中
子父传参:子组件通过自定义事件的方式传参,通过$emit去进行传参。
父类页面:
子:
这样,在父页面handleSubmit这个方法中,e中就会得到组件中的result的值
组件和组件通信
v-if
是“真正”的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建。
v-if
也是惰性的:如果在初始渲染时条件为假,则什么也不做,直到条件第一次变为真时,才会开始渲染条件块。
相比之下,v-show
就简单得多,不管初始条件是什么,元素总是会被渲染,并且只是简单地基于 CSS 进行切换,来控制元素的显示和隐藏。
根据应用场景选择
v-if
有更高的切换开销,如果在运行时条件很少改变,则使用 v-if 较好。v-show
有更高的初始渲染开销。如果需要非常频繁地切换,则使用 v-show 较好。注意
v-if
和 v-for
。v-if
与 v-for
一起使用时,v-for
具有比 v-if
更高的优先级。 当 Vue
处理指令时,v-for
比 v-if
具有更高的优先级,通过v-if
移动到容器元素,不会再重复遍历列表中的每个值。取而代之的是,只检查它一次,且不会在 v-if
为否的时候运算 v-for
。
this.$refs.myPicker.show()
在我们的vue项⽬中,难免会因为引⽤第三⽅库⽽需要操作DOM标签,vue为我们提供了ref属性。 ref 被⽤来给元素或⼦组件注册引⽤信息。引⽤信息将会注册在⽗组件的 $refs 对象上。如果在普通的 DOM 元素上使⽤,引⽤指向的就是 DOM 元素;如果⽤在⼦组件上,引⽤就指向组件实例
this.$refs.myPicker,里面还有组件的其他属性
api存放页面调用的接口;assets⽂件夹是放静态资源;config:系统配置文件;components是放组件;router是定义路由相关的配置;utils:存放组件;view视图;app.vue是⼀个应⽤主组件;main.js是⼊⼝⽂件;.env.development 具体的dev环境的配置信息
active是否作用于该div元素上 由isPlaying数据来决定,为true时作用,false时不作用。
三者公共点都是隐藏。不同点:
数组的7个方法。 分别是:push、shift、pop、splice、unshift、sort、reverse
三者公共点都是隐藏。不同点: