Vue中mixins详解
mixins介绍
1)vue中提供了一种混合机制,用来更高效的实现组件内容的复用。
2)mixins是一种分发Vue组件中科服用功能的非常灵活的方式
3)混合对象可以包含任意组件选项
4)当组件使用混合对象时,所有混合对象的选项将被混入该组件本身的选项
mixins介绍
1)普通的组件引用是在子组件被引入父组件之后,会在父组件之内单独开辟一块单独的空间,
然后再通过父子传值的方式进行数据的传递,但是从本质上看,两者还是相互独立的两个不同区域
mixins的作用就是在引入组件之后,则是将组件内部的data,methods等属性与父组件相应的内容进行合并,
相当于在引入之后,父组件的各种属性方法都被填充了
2)单纯的组件引用;
父组件+子组件》》父组件+子组件
mixins方式引入组件
父组件+子组件》》new父组件
方法的覆盖
如果在引用mixins的同时,在组件中第一重复定义相同的方法,
则mixins中的方法会被覆盖
合并生命周期
mixins组件会与混入的组件的生命周期合并,并且同一个生命周期,混入对象会比组件的先执行
解构赋值具体使用
let [foo = true] = [];
这里表示结构赋值允许指定默认值
对于数组的结构赋值,可以很方便的将现有对象的方法复制到某个变量,
但是如果属性名和属性值不一样的话,必须要写成是
let { first: f, last: l } = obj;
f // 'hello'
l // 'world'
实际上说明,对象的解构赋值是下面形式的简写
let { foo: foo, bar: bar } = { foo: 'aaa', bar: 'bbb' };
也就是说对象的解构赋值的内部机制,是先找到同名属性,然后再赋值给对应的变量,
真正被赋值的是后者而不是前者
Vue生命周期activated
<keep-alive>包裹的动态组件会被缓存,他是一个抽象组件,他自身不会渲染一个DOM,也不会出现在父组件链中,
当组件在keep-alive内被切换,他的activated和deactivated这两个生命周期钩子函数将会被对应执行
activated生命周期在keep-alive组件激活时调用
服务端渲染期间不调用该生命周期
通常是和deactivated周期一起使用
例子:
当使用keep-alive包裹两个组件,组件A和组件B,当第一次切换到组件A时,
组件A的created和activated都会被执行,这时通过点击事件改变组件A的文字颜色,
在切换到组件B时,这时组件A的deactivated生命周期就被会触发,在切回组件A,
组件A的activate生命周期函数就会被触发,但是他的生命周期函数created就不会被触发,
而且A组件的文字颜色也是我们之前设置过的
vue事件里面支持的内容
@click 表达式即可以直接使用 js 语句,也可以是一个定义在 vue 实例中 methods 内的函数名
调用的方法名如果不需要参数,那么可以不写括号。
当不传递参数的时候,里面会有一个事件对象(event)可以使用,
但是传递了参数就不会出现事件对象
:info="detail" fromType="ka"
使用冒号的这种形式,我们一般需要在data中自己定义数据,但是fromType是在props中接收的,
vue-router 和 prop类型
1)vue中父组件通过props属性向子组件传递数据,定义组件的时候可以定义一个props属性,值可以时一个字符串数组或者一个对象,
2)props除了数组,也可以是一个对象,此时对象那个的值对应的props的名称,值又是一个对象,可以包含如下属性:
1>type:类型,可以设置为:String、Number、Boolean、Array、Object、Date等等;
2>如果只设置type而未设置其他选项,则值可以直接用类型,例如:props:{title:Object}
3>default;默认值,这里也可以是一个函数,注意:对象或数组默认值必须是从一个工厂函数获取的
4>required;布尔类型,表示是否必填项目
5>validator;自定义验证函数
注意:prop会在一个组件实例创建之前进行验证,所以实例的属性(如data computed等)在default或者是validator函数中是不可用的
可以给prop属性指定验证要求
vue-router中的props
vue-router中,在组件中使用$route会实质与其对一个路由形成高度耦合,
从而使组件只能在某些特定的url上使用,
限制了其灵活性,可以使用props将组件和路由解耦
vue-router是第三方插件的东西,但是props是vue本身的属性