vue3.x非兼容的变更
走马观花似的看看从vue2.x开始到vue3.x的一些非兼容性的变更,这样在将来升级过程中遇到那些奇奇怪怪的不能用的时候,就会很容易解决啦。
全局 API
全局 Vue API 已更改为使用应用程序实例
全局和内部 API 已经被重构为支持 tree-shake
模板指令
组件上 v-model 用法已更改,以替换 v-bind.sync
和非 v-for 节点上的 key 用法已更改
在同一元素上使用的 v-if 和 v-for 优先级已更改 v-bind="object" 现在排序敏感 v-on:event.native 修饰符已移除 v-for 中的 ref 不再注册 ref 数组 只能使用普通函数创建函数式组件 functional attribute 在单文件组件 (SFC) 的 和 functional 组件选项中被废弃
异步组件现在需要使用 defineAsyncComponent 方法来创建 组件事件现在需要在 emits 选项中声明 渲染函数 API 更改 $scopedSlots property 已移除,所有插槽都通过 $slots 作为函数暴露 $listeners 被移除或整合到 $attrs $attrs 现在包含 class 和 style attribute 自定义元素检测现在在模板编译时执行 特殊的 is attribute 的使用被严格限制在被保留的 destroyed 生命周期选项被重命名为 unmounted beforeDestroy 生命周期选项被重命名为 beforeUnmount default prop 工厂函数不再可以访问 this 上下文 自定义指令的 API 已更改为与组件生命周期一致,且 binding.expression 已移除 data 选项应始终被声明为一个函数 来自 mixin 的 data 选项现在为浅合并 Attribute 强制策略已更改 一些过渡的 class 被重命名 当侦听一个数组时,只有当数组被替换时,回调才会触发,如果需要在变更时触发,则必须指定 deep 选项 没有特殊指令的标记 (v-if/else-if/else、v-for 或 v-slot) 的 现在被视为普通元素,并将渲染为原生的 元素,而不是渲染其内部内容。
已挂载的应用不会取代它所挂载的元素 生命周期的 hook: 事件前缀改为 vnode- keyCode 作为 v-on 修饰符的支持 $on、$off 和 $once 实例方法 过滤器 (filter) 内联模板 attribute $children 实例 property propsData 选项 $destroy 实例方法。用户不应再手动管理单个 Vue 组件的生命周期。 全局函数 set 和 delete 以及实例方法 $set 和 $delete。基于代理的变化检测已经不再需要它们了。组件
渲染函数
自定义元素
其他小改变
被移除的 API
浙公网安备 33010602011771号