美文网首页
vue3.x非兼容的变更

vue3.x非兼容的变更

作者: 学杂不精 | 来源:发表于2021-10-22 19:49 被阅读0次

    走马观花似的看看从vue2.x开始到vue3.x的一些非兼容性的变更,这样在将来升级过程中遇到那些奇奇怪怪的不能用的时候,就会很容易解决啦。

    全局 API

    全局 Vue API 已更改为使用应用程序实例

    全局和内部 API 已经被重构为支持 tree-shake

    模板指令

    组件上 v-model 用法已更改,以替换 v-bind.sync

    <template v-for> 和非 v-for 节点上的 key 用法已更改

    在同一元素上使用的 v-if 和 v-for 优先级已更改

    v-bind="object" 现在排序敏感

    v-on:event.native 修饰符已移除

    v-for 中的 ref 不再注册 ref 数组

    组件

    只能使用普通函数创建函数式组件

    functional attribute 在单文件组件 (SFC) 的 <template> 和 functional 组件选项中被废弃

    异步组件现在需要使用 defineAsyncComponent 方法来创建

    组件事件现在需要在 emits 选项中声明

    渲染函数

    渲染函数 API 更改

    scopedSlots property 已移除,所有插槽都通过slots 作为函数暴露

    listeners 被移除或整合到attrs

    $attrs 现在包含 class 和 style attribute

    自定义元素

    自定义元素检测现在在模板编译时执行

    特殊的 is attribute 的使用被严格限制在被保留的 <component> 标签中

    其他小改变

    destroyed 生命周期选项被重命名为 unmounted

    beforeDestroy 生命周期选项被重命名为 beforeUnmount

    default prop 工厂函数不再可以访问 this 上下文

    自定义指令的 API 已更改为与组件生命周期一致,且 binding.expression 已移除

    data 选项应始终被声明为一个函数

    来自 mixin 的 data 选项现在为浅合并

    Attribute 强制策略已更改

    一些过渡的 class 被重命名

    <TransitionGroup> 不再默认渲染包裹元素

    当侦听一个数组时,只有当数组被替换时,回调才会触发,如果需要在变更时触发,则必须指定 deep 选项

    没有特殊指令的标记 (v-if/else-if/else、v-for 或 v-slot) 的 <template> 现在被视为普通元素,并将渲染为原生的 <template> 元素,而不是渲染其内部内容。

    已挂载的应用不会取代它所挂载的元素

    生命周期的 hook: 事件前缀改为 vnode-

    被移除的 API

    keyCode 作为 v-on 修饰符的支持

    on、off 和 $once 实例方法

    过滤器 (filter)

    内联模板 attribute

    $children 实例 property

    propsData 选项

    $destroy 实例方法。用户不应再手动管理单个 Vue 组件的生命周期。

    全局函数 set 和 delete 以及实例方法 set 和delete。基于代理的变化检测已经不再需要它们了。

    相关文章

      网友评论

          本文标题:vue3.x非兼容的变更

          本文链接:https://www.haomeiwen.com/subject/prnxaltx.html