vue3新特性
Reading Time:The full text has 381 words, estimated reading time: 2 minutes
Creation Date:2021-06-14
Previous Article:vue3学习笔记
Next Article:工具脚本项目构建-NodeJS
BEGIN
- ref传入函数, 使用同react
- 异步引入需要使用助手函数
defineAsyncComponent
包裹, 选项用法时loader
替代component
const asyncModal = defineAsyncComponent(() => import('./path/to/*.vue'));
// 或
const asyncModalWithOptions = defineAsyncComponent({
loader: () => import('./path/to/*.vue'),
delay: 200,
timeout: 3000,
errorComponent: ErrorComponent,
loadingComponent: LoadingComponent
});
style
和class
挂载在$attrs
下, 不再捆绑到组件根中- 移除
$children
- data只能是返回对象的函数
- Mixin只执行浅合并
- 要使用事件需要在emits中定义, 如:
emits: ['change', 'update']
- 移除
$on
、$off
和$once
- 移除过滤器语法
- 支持片段(fragments)
- 导入
nextTick
:import { nextTick } from 'vue';
v-if
/v-else
/v-else-if
中可以不写key,template
中存在v-for
则key写在template
中- 按键修饰符别名取键码值 🔗, 如:
<input v-on:keyup.delete="confirmDelete" />
- 移除
$listeners
- render不再接收渲染函数, 需要外部引入
import { h } from 'vue';
- 使用已经注册的组件时不再自己查找, 而是需要使用
resolveComponent
包装, 如:resolveComponent('my-component')
- 移除
$scopedSlots
统一到$slots
, 且插槽作为函数返回 <transition>
过渡类名修改:- leave-class 已经被重命名为 leave-from-class (在渲染函数或 JSX 中可以写为:leaveFromClass)
- enter-class 已经被重命名为 enter-from-class (在渲染函数或 JSX 中可以写为:enterFromClass)
- 移除
.native
修饰, 如2.x中的:v-on:click.native
, 在3.x中, 需要原生触发的事件我们只要在emits中不加入即可 - 移除
v-bind
的.sync
修饰符, 支持多个v-model
, 变更如下:- 2.x语法:
<ChildComponent :value="pageTitle" @input="pageTitle = $event" />
- 3.x语法:
<ChildComponent :title="pageTitle" @update:title="pageTitle = $event" />
- 2.x语法:
v-if
的优先级高于v-for
v-bind
改为顺序合并- 子组件生命周期钩子
@hook:updated
改为@vnode-updated
或vnodeUpdated
FINISH
Previous Article:vue3学习笔记
Next Article:工具脚本项目构建-NodeJS