组件生命周期
组件生命周期指的是组件从创建到销毁的过程,在这个过程中的一些不同的阶段,`vue` 会调用指定的一些组件方法
基本生命周期函数有下面几个阶段:
- 创建阶段
- 挂载阶段
- 更新阶段
- 卸载阶段
每一个阶段都对应着 之前 和 之后 两个函数
创建阶段
beforeCreate()
初始化阶段,应用不多
created()
在实例创建完成后被立即调用,该阶段完成了对 `data` 中的数据的 `observer`,该阶段可以处理一些异步任务
挂载阶段
beforeMount()
在挂载开始之前被调用,应用不多
mounted()
该阶段执行完了模板解析,以及挂载。同时组件根组件元素被赋给了 `$el` 属性,该阶段可以通过 DOM 操作来对组件内部元素
进行处理了
更新阶段
beforeUpdate()
数据更新时调用,但是还没有对视图进行重新渲染,这个时候,可以获取视图更新之前的状态
updated()
由于数据的变更导致的视图重新渲染,可以通过 DOM 操作来获取视图的最新状态
卸载阶段
beforeDestroy()
实例销毁之前调用,移除一些不必要的冗余数据,比如定时器
destroyed()
Vue 实例销毁后调用
errorCaptured()
当捕获一个来自子孙组件的错误时被调用,此钩子会收到三个参数:错误对象、发生错误的组件实例以及一个包含错误来源
信息的字符串。此钩子可以返回 `false` 以阻止该错误继续向上传播。
定时器手动清理:
组件销毁了,但定时器一直在运行,需要手动清理
ef 与 $refs
如果我们希望获取组件节点,进行 DOM 相关操作,可以通过 `ref` 和 `$refs` 来完成
$refs
该属性的是一个对象,存储了通过 `ref` 绑定的元素对象或者组件实例对象
nextTick
当数据更新的时候,视图并不会立即渲染,这个时候我们期望获取到视图更新后的数据,可以通过 `nextTick` 来进行操作
`nextTick` 方法将在更新队列循环结束之后立即调用
动态组件
有的时候,我们需要在多个不同的组件之间进行切换。虽然我们可以通过 <u>v-if</u> 来处理,但是会比较麻烦,`vue` 提供了一个
更方便的方式来处理这种情况
component 组件
`component` 是 `vue` 内置的一个组件,它提供一个 `is` 属性用来动态渲染不同的组件
我们会发现,当组件切换的时候,都会触发组件的销毁和重建。首先,性能不好。其次,会丢失组件状态
keep-alive 组件
当在这些组件之间切换的时候,有时会想保持这些组件的状态,以避免反复重渲染导致的性能问题。`keep-alive` 是一个内置容器
组件, 使用 `>keep-alive` 以后,内部包含的组件将增加 `激活` 和 `失活/冻结` 的状态
生命周期
使用了 `keep-alive` 的组件会触发 `activated`、`deactivated` 两个生命周期函数
activated
`keep-alive` 组件激活时调用
`deactivated`
`keep-alive` 组件停用时调用
插件
插件通常是用来给 `vue` 提供扩展功能的一种方式
- 给 `Vue` 添加属性和方法
- 给 `Vue 实例` 添加属性和方法
- 添加全局资源:指令、过滤器、组件等
- 添加配置选项
安装插件
通过全局方法 `Vue.use()` 使用插件。它需要在调用 `new Vue()` 启动应用之前完成
如果插件是一个对象,必须提供 `install` 方法。如果插件是一个函数,它会被作为 `install` 方法。`install` 方法调用时,
会将 Vue 作为参数传入
实例
axios
https://cdn.bootcss.com/axios/0.19.0-beta.1/axios.min.js
修改 `prototype` 会修改整个 `Vue` 原型链
另外一种方式
案例:
动画
在 `vue` 中给组件或元素添加动画的方式可以分为多种,但总体无非还是通过 `css` 和 `JavaScript` 来进行处理
CSS
通过 `css` 添加动画的方式特别的简单,只需要利用 `css` 中的 `transition` 就可以做到
vue 中的动画处理
在 `vue` 中基本和上面的处理方式是一样的
动画生命周期
`vue` 为元素和组件的几个特殊的情况提供了对应的处理方式
transition 组件
过渡类名
- `v-enter`:定义进入过渡的开始状态。在元素被插入之前生效,在元素被插入之后的下一帧移除
- `v-enter-active`:定义进入过渡生效时的状态。在整个进入过渡的阶段中应用,在元素被插入之前生效,在过渡/动画完成之后移除。
这个类可以被用来定义进入过渡的过程时间,延迟和曲线函数
- `v-enter-to`: **2.1.8版及以上** 定义进入过渡的结束状态。在元素被插入之后下一帧生效 (与此同时 `v-enter` 被移除),在过渡/动画
完成之后移除
- `v-leave`: 定义离开过渡的开始状态。在离开过渡被触发时立刻生效,下一帧被移除
- `v-leave-active`:定义离开过渡生效时的状态。在整个离开过渡的阶段中应用,在离开过渡被触发时立刻生效,在过渡/动画完成之后
移除。这个类可以被用来定义离开过渡的过程时间,延迟和曲线函数
- `v-leave-to`: **2.1.8版及以上** 定义离开过渡的结束状态。在离开过渡被触发之后下一帧生效 (与此同时 `v-leave` 被删除),
在过渡/动画完成之后移除