当前位置: 首页 > article >正文

vue2和vue3指令

Vue 2 和 Vue 3 的指令系统非常相似,但 Vue 3 在指令方面进行了优化和扩展。以下是 Vue 2 和 Vue 3 中指令的对比:


1. 通用指令

这些指令在 Vue 2 和 Vue 3 中都可以使用,功能一致:

指令说明
v-bind绑定 HTML 属性或组件 props
v-model双向数据绑定
v-if条件渲染
v-elsev-if 的后续条件
v-else-ifv-if 的其他条件
v-for列表渲染
v-on绑定事件监听器
v-show根据条件切换元素的显示/隐藏(通过 display 样式)
v-text更新元素的文本内容
v-html更新元素的 HTML 内容
v-cloak防止闪烁,直到编译结束
v-pre跳过编译,直接渲染原始内容
v-once只渲染一次,不再更新

2. Vue 3 新增的指令功能

(1) v-model 支持多绑定

Vue 2 的 v-model 默认绑定 valueinput 事件,单个组件只能绑定一个 v-model

Vue 3 支持 多绑定,可以自定义绑定的属性名称。例如:

<!-- Vue 3 支持多绑定 -->
<MyComponent v-model:title="title" v-model:content="content" />

在组件中声明绑定:

props: ['title', 'content'],
emits: ['update:title', 'update:content'],

(2) 自定义指令的更新函数增强

Vue 3 自定义指令中的钩子函数比 Vue 2 更强大,允许直接访问 vnodeprevVnode,更适合响应式更新。

Vue 2 自定义指令示例:
Vue.directive('focus', {
  inserted(el) {
    el.focus();
  },
});
Vue 3 自定义指令示例:
const app = Vue.createApp({});
app.directive('focus', {
  mounted(el) {
    el.focus(); // 元素插入时触发
  },
  updated(el) {
    el.focus(); // 数据更新时触发
  },
});

(3) 移除的指令

  • v-model 修饰符变化

    • Vue 2 使用 v-model.lazyv-model.numberv-model.trim
    • Vue 3 改用参数:
      <!-- Vue 3 -->
      <input v-model.lazy="message" />
      <input v-model.number="age" />
      <input v-model.trim="name" />
      
  • v-on 修饰符合并

    • Vue 2 的 .native 修饰符被移除。
    • Vue 3 通过 emits 传递事件,无需 .native

(4) Transition 组件中的指令

Vue 3 对 v-showTransition 组件中的支持更为直观,直接支持过渡效果:

<template>
  <transition name="fade">
    <div v-show="visible">Hello Vue 3</div>
  </transition>
</template>

如果你需要针对 Vue 2 和 Vue 3 的指令做适配,可以根据业务需求具体分析。需要更多的代码实例,也可以告诉我!


http://www.kler.cn/a/517348.html

相关文章:

  • Pyecharts之图表组合与布局优化
  • Kubernetes可视化界面
  • WPF3-在xaml中引用其他程序集的名称空间
  • kafka-保姆级配置说明(broker)
  • 在Linux系统上安装.NET
  • 高等数学学习笔记 ☞ 微分方程
  • [操作系统] 深入进程地址空间
  • 机器学习数据集来源
  • Sourcetree:一款高效便捷的Git版本控制客户端
  • UI操作总结
  • c++在线音乐播放器项目开发记录(1)
  • 【Windows】Linux 远程连接工具SecureCRT9.1、SecureFX9.1的安装
  • VScode连接远程Linux服务器环境配置
  • postgresql根据主键ID字段分批删除表数据
  • Python自动化运维:一键掌控服务器的高效之道
  • 【QT】-explicit关键字
  • 如何将使用unsloth微调的模型部署到ollama?
  • 通过聚合和分离进行音频深度伪造检测的领域泛化
  • Android Studio:视图绑定的岁月变迁(2/100)
  • 在Linux系统上安装.NET
  • 【江西省乡镇界】面图层shp格式乡镇名称和编码wgs84无偏移arcgis数据内容测评
  • AI评估困境:标准化与实际应用的鸿沟
  • MySQL Redo Log 两阶段提交
  • 01 使用 海康SDK 对车辆监控设备进行布防
  • 安卓入门三十五 事件分发机制详解
  • Visual Studio 2022 GitHub Copilot聊天使用