VUE-4:组件生命周期、动态组件、插件、动画

组件生命周期

        组件生命周期指的是组件从创建到销毁的过程,在这个过程中的一些不同的阶段,`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` 被删除),

                              在过渡/动画完成之后移除


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章