vue3 新特性--其他

1. 全局 API 转移

  • vue3 中将全局 API,即 Vue.xxx 调整到应用实例 app 上
2.x 全局 API(Vue) 3.x 实例 API (app)
Vue.config.xxxx app.config.xxxx
Vue.config.productionTip 移除
Vue.component app.component
Vue.directive app.directive
Vue.mixin app.mixin
Vue.use app.use
Vue.prototype app.config.globalProperties

2. 自定义指令

vue2 自定义指令钩子:

  • bind:只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置。
  • inserted:被绑定元素插入父节点时调用 (仅保证父节点存在,但不一定已被插入文档中)。
  • update:所在组件的 VNode 更新时调用,但是可能发生在其子 VNode 更新之前。指令的值可能发生了改变,也可能没有。但是你可以通过比较更新前后的值来忽略不必要的模板更新。
  • componentUpdated:指令所在组件的 VNode 及其子 VNode 全部更新后调用。
  • unbind:只调用一次,指令与元素解绑时调用。

vue2和vue3自定义指令钩子对比:
vue2和vue3自定义指令钩子对比

// vue2 注册一个全局自定义指令 v-focus
Vue.directive('focus', { 
    // 当被绑定的元素插入到 DOM 中时
    inserted: function (el) { 
        // 聚焦元素 
        el.focus() 
    } 
})

// vue3 注册一个全局自定义指令 v-focus
const { createApp } from "vue"
const app = createApp({}) 
app.directive('focus', { 
    mounted(el) { 
        el.focus()
    } 
})

3. 异步组件

Vue3 中 使用 defineAsyncComponent 定义异步组件,配置选项 component 替换为 loader,loader 函数本身不再接收 resolve 和 reject 参数,且必须返回一个 Promise,用法如下:

<template> 
    <!-- 异步组件的使用 --> 
    <AsyncPage /> 
    <AsyncPageWithOptions />
</tempate>
import { defineAsyncComponent } from "vue"; 
export default { 
    components: {
        // 无配置项异步组件 
        AsyncPage: defineAsyncComponent(() => import("./NextPage.vue")),
        
        // 有配置项异步组件 
        AsyncPageWithOptions: defineAsyncComponent({ 
            loader: () => import("./NextPage.vue"), 
            delay: 200, 
            timeout: 3000, 
            errorComponent: () => import("./ErrorComponent.vue"), 
            loadingComponent: () => import("./LoadingComponent.vue")
        }) 
    }
}

4. 其他改变

  • data 选项应始终被声明为一个函数
  • 过渡类名更改:
/* vue2 写法 */
.v-enter,
.v-leave-to {
    opacity: 0;
}
.v-leave,
.v-enter-to {
    opacity: 1;
}

/* vue3 写法 */
.v-enter-from,
.v-leave-to {
    opacity: 0;
}
.v-leave-from,
.v-enter-to {
    opacity: 1;
}
  • 移除 keyCode 作为 v-on 的修饰符,同时也不再支持 config.keyCodes
  • 移除 v-on.native 修饰符
  • 移除过滤器(filter)
  • v-if 优先 v-for 解析
posted @ 2022-03-21 10:57  这货不是古月先生  阅读(84)  评论(0编辑  收藏  举报