1、生命周期钩子函数
(1)beforecreate:最早执行,在实例初始化之后,无法访问数据
created:可以获取数据(发Ajax请求用created),但组件未挂载,访问不到真实的dom节点
(2)beforeMount:在挂载开始前被调用,可以访问数据,虚拟dom已存在,不能拿到节点
mounted:在页面挂在后执行,可以拿到节点和数据
(3)beforeUpdate:在数据更新前调用
updated:在数据更新后调用,监控数据变化
(4)beforeDestroy:实例销毁前调用,适合移除时间、定时器等,防止内存的泄露
destoryed:组件销毁后使用
(5)activated: 被keep-alive缓存的组件激活时调用
deactivated:被keep-alive缓存的组件停用时调用
2、组件通信
(1)父子组件:
【1】父组件通过props传递数据给子组件,子组件通过emit发送事件传递数据给父组件
【2】通过访问$parent或者$children对象来访问数组
(2)兄弟组件:
通过父组件的子组件实现:this.$parent.$children
(3)跨多层次组件通信:
可以使用 Vue 2.2 新增的 API provide / inject
3、extend能做什么
vue.extend用于创建组件构造器,通常与$mount一起使用(常用来实现加载效果,弹窗效果等)
4、mixin与mixins的区别
mixin 用于全局混入,会影响到每个组件实例,通常插件都是这样做初始化的
Vue.mixin({
beforeCreate() {
// ...逻辑
// 这种方式会影响到每个组件的 beforeCreate 钩子函数
}
})
mixins 应该是我们最常使用的扩展组件的方式了。如果多个组件中有相同的业务逻辑,就可以将这些逻辑剥离出来,通过 mixins 混入代码,比如上拉下拉加载数据这种逻辑等等。
5、computed和watch的区别
computed:computed时计算属性,computed中的函数所依赖的属性没有发生变化,那么调用当前的函数的时候会从缓存中读取,且computed中的函数必须要用return返回
watch:用于监听一个值的变化,每次监听的值发生变化时都要进行回调
所以一般来说需要依赖别的属性来动态获得值的时候可以使用 computed,对于监听到值的变化需要做一些复杂业务逻辑的情况可以使用 watch
6、v-show和v-if的区别:
v-show:通过css样式中的dispaly:none;控制元素显示、隐藏
v-if:是真正的条件渲染,它通过控制vue的虚拟dom树上的节点,来联动控制真实dom上的节点,从而控制元素的显示、隐藏
当一个元素需要平方转换状态时,适合用v-show
当一个元素的状态很少被改变是,用v-if更合适