组件的生命周期
每个组件都可能经历创建、挂载、销毁等阶段,生命周期函数可以在不同阶段想要给组件添加事件。生命周期函数是一些钩子函数(回调函数),在对应阶段会被 Vue 源码内部进行回调。
组件的生命收起包括:创建(beforeCreat、created)、挂载(beforeMount、mounted)更新(beforeUpdate、updated)、卸载(beforeUnmount、unmounted),最后将其销毁。
$refs 的使用
在组件中想要直接获取到元素对象或者子组件实例,可以给元素或者组件绑定一个 ref 的 attribute 属性。组件实例有一个$refs 属性,它是它一个对象 Object,持有注册过 ref attribute 的所有 DOM 元素和组件实例。
动态组件
动态组件是使用 component 组件,通 is 属性来绑定全局组件或已注册的局部组件。
keep-alive
某些组件在切换时需要保持状态,则需要使用 keep-alive 组件。keep-alive 会匹配组件的 name 属性,有三个属性,include、exclude、max。include 和 exclude 接受字符串、数组、正则表达式,max 接受数值和字符串。对于缓存的组件来说,再次进入时不会执行 created 或者 mounted 等生命周期函数,需要使用 activated 和 deactivated 这两个生命周期钩子函数来监听。
异步组件
某些组件需要通过异步的方式来进行加载(目的是可以对其进行分包处理)时,可以使用 defineAsyncComponent 函数。defineAsyncComponent 接受两种类型的参数:类型一:工厂函数,该工厂函数需要返回一个 Promise 对象;类型二:接受一个对象类型,对异步函数进行配置。
组件的 v-model
默认情况下的 v-model 其实是绑定了 modelValue 属性和@update:modelValue 的事件。如果需要绑定更多,可以给 v-model 传入一个参数,那么这个参数的名称就是我们绑定属性的名称。
mixin 混入
当组件和组件之间存在相同代码逻辑时,可以使用 mixin 对相同逻辑进行抽取。一个 Mixin 对象可以包含任何组件选项,当组件使用 Mixin 对象时,所有 Mixin 对象的选项将被混合进入该组件本身的选项中。