vue2和vue3指令

ops/2025/2/4 17:09:04/

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.ppmy.cn/ops/155620.html

相关文章

Joplin 插件在Vscode中无法显示图片

1.问题 在vscode里面装好joplin插件之后&#xff0c;无法显示图片内容。 粘贴的图片可以再vscode中显示&#xff0c;无法再joplin客户端显示 2.解决方法 这种情况是因为和vscode自带的MD编辑器的预览模式有冲突&#xff0c;或者没用通过专用方式上传图片。 方法一&#xff…

【LeetCode 刷题】二叉树(3)-二叉树的属性

此博客为《代码随想录》二叉树章节的学习笔记&#xff0c;主要内容为二叉树的属性相关的题目解析。 文章目录 101. 对称二叉树104.二叉树的最大深度111.二叉树的最小深度222.完全二叉树的节点个数110.平衡二叉树257. 二叉树的所有路径404.左叶子之和513.找树左下角的值112. 路…

CentOs9新手教程

CentOS 9是基于RHEL的CentOS Stream版本&#xff0c;主要用于开发和测试环境&#xff0c;不适合作为生产环境的稳定系统。它提供了最新的软件和功能&#xff0c;但可能存在不稳定性和兼容性问题。如果你需要一个稳定的生产环境&#xff0c;建议使用CentOS Linux版本。 安装环境…

利用Vue和javascript分别编写一个“Hello World”的定时更新

目录 一、利用Vue编写一个“Hello World”的定时更新&#xff08;1&#xff09;vue编码在Html文件中&#xff08;2&#xff09;vue编码在js文件中 二、利用javascript编写一个“Hello World”的定时更新 一、利用Vue编写一个“Hello World”的定时更新 &#xff08;1&#xff…

Python基于Vue+Django网上商城的设计与实现【附源码】

博主介绍&#xff1a;✌Java老徐、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&…

并发编程中的常见问题

1 竞态条件 (Race Condition) 定义:竞态条件是指多个线程在访问共享资源时,由于执行顺序的不同导致结果不确定的情况。 示例: public class Counter {private int count = 0;public void increment() {count++;}public int getCount() {return count;} }在多线程环境下,…

走向基于大语言模型的新一代推荐系统:综述与展望

HightLight 论文题目&#xff1a;Towards Next-Generation LLM-based Recommender Systems: A Survey and Beyond作者机构&#xff1a;吉林大学、香港理工大学、悉尼科技大学、Meta AI论文地址&#xff1a; https://arxiv.org/abs/2410.1974 基于大语言模型的下一代推荐系统&…

QT常用控件

“ 别告诉孩子&#xff0c;我是危险的魔鬼~ ” 如何理解控件&#xff1f; 控件是GUI&#xff08;图形用户界面&#xff09;的通用概念&#xff0c;不止出现在QT中。当完全没有控件时&#xff0c;需要通过⼀些绘图 API ⼿动的绘制出按钮或者输⼊框等内容, 代码编写繁琐。 或是包…