Vue 3 中的 v-bind 完全指南

Vue 3 中的 v-bind 完全指南

v-bind 是 Vue 中常用的指令之一,用于将数据绑定到 HTML 属性、CSS 样式、Class 类名等上。Vue 3 的 v-bind 功能和 Vue 2 基本一致,但在 <script setup> 语法糖的配合下,更加简洁高效。本文将详细讲解 v-bind 的各种用法,并展示多个实际场景的示例。


一、什么是 v-bind

v-bind 是 Vue 中的一个指令,用于将 JavaScript 表达式的结果绑定到 HTML 元素的属性上,实现数据和 DOM 元素的动态关联。通过 v-bind 可以让属性值随着数据变化而自动更新。

在 Vue 3 中,我们可以通过以下几种方式使用 v-bind

  • 动态绑定 HTML 原生属性(如 hrefsrc 等)
  • 动态绑定 CSS 样式和 Class
  • 动态绑定多个属性

二、基础用法

1. 动态绑定单个属性

v-bind 最常见的用法是将数据绑定到 HTML 元素的属性上。可以使用 v-bind:属性名 或者简写为 :属性名

<template><div><a :href="url">访问链接</a><button :disabled="isDisabled">按钮</button></div>
</template><script setup>
import { ref } from 'vue';const url = ref('https://example.com');
const isDisabled = ref(false);
</script>

解释:

  • :href="url"url 的值绑定到 <a> 标签的 href 属性上。当 url 更新时,链接地址也会随之更新。
  • :disabled="isDisabled" 将按钮的禁用状态与 isDisabled 绑定,当 isDisabledtrue 时,按钮将被禁用。

2. 动态绑定对象属性

在某些场景下,我们需要动态绑定多个属性,v-bind 支持将一个对象传入,按对象的属性绑定到对应的元素属性上。

<template><div><a v-bind="linkAttrs">访问链接</a></div>
</template><script setup>
import { ref } from 'vue';const linkAttrs = ref({href: 'https://example.com',target: '_blank',rel: 'noopener noreferrer'
});
</script>

解释:

  • v-bind="linkAttrs" 将对象 linkAttrs 中的所有属性绑定到 <a> 标签上,相当于写了 :href="linkAttrs.href" :target="linkAttrs.target" :rel="linkAttrs.rel"

三、动态绑定 Class

v-bind:class 用于动态绑定元素的类名。我们可以使用字符串、对象或数组的形式绑定类名,以便实现条件类样式。

1. 使用字符串

绑定单个类或多个类时,可以直接传入字符串。

<template><div><p :class="activeClass">动态类名</p></div>
</template><script setup>
import { ref } from 'vue';const activeClass = ref('active');
</script>

2. 使用对象

使用对象绑定时,可以根据条件为元素添加不同的类名。

<template><div><p :class="{ active: isActive, disabled: isDisabled }">条件类名</p></div>
</template><script setup>
import { ref } from 'vue';const isActive = ref(true);
const isDisabled = ref(false);
</script>

解释:

  • :class="{ active: isActive, disabled: isDisabled }" 将根据 isActiveisDisabled 的值动态决定是否添加 activedisabled 类名。

3. 使用数组

使用数组可以动态绑定多个类名,数组中的每个元素可以是字符串或条件表达式。

<template><div><p :class="[mainClass, isActive ? 'active' : '']">多重类名</p></div>
</template><script setup>
import { ref } from 'vue';const mainClass = ref('main');
const isActive = ref(true);
</script>

四、动态绑定内联样式

v-bind:style 用于动态绑定元素的内联样式,可以通过对象或数组的形式绑定样式属性。

1. 使用对象绑定样式

将一个对象传递给 v-bind:style,对象的键值对表示样式属性和值。

<template><div><p :style="{ color: textColor, fontSize: fontSize + 'px' }">动态样式</p></div>
</template><script setup>
import { ref } from 'vue';const textColor = ref('red');
const fontSize = ref(16);
</script>

解释:

  • :style="{ color: textColor, fontSize: fontSize + 'px' }" 将文本颜色和字体大小动态绑定到 textColorfontSize

2. 使用数组绑定样式

可以使用数组绑定多个样式对象,这在多个条件样式组合时非常有用。

<template><div><p :style="[baseStyle, isHighlighted ? highlightStyle : {}]">组合样式</p></div>
</template><script setup>
import { ref } from 'vue';const baseStyle = ref({ color: 'blue', fontSize: '20px' });
const highlightStyle = ref({ backgroundColor: 'yellow' });
const isHighlighted = ref(true);
</script>

五、修饰符 .prop.attr

在 Vue 中,DOM 元素的属性(attribute)和 JavaScript 对象的属性(property)有一些不同。一般来说,v-bind 默认会设置 DOM 属性,但有时需要更改为 JavaScript 属性,Vue 提供了 .prop.attr 修饰符:

  • .prop 强制绑定为 JavaScript 属性。
  • .attr 强制绑定为 HTML 属性。
<template><input v-bind:id.prop="dynamicId" />
</template><script setup>
import { ref } from 'vue';const dynamicId = ref('unique-id');
</script>

六、缩写语法

v-bind 可以缩写为 :,这在模板中大量使用 v-bind 时可以显著减少代码量,使代码更清晰。

<template><div><!-- 全写法 --><p v-bind:class="{ active: isActive }">全写法</p><!-- 缩写法 --><p :class="{ active: isActive }">缩写法</p></div>
</template><script setup>
import { ref } from 'vue';const isActive = ref(true);
</script>

七、在组件上使用 v-bind

1. 动态传递属性

当我们将多个属性动态传递给子组件时,可以使用对象语法将这些属性绑定给子组件。

<template><ChildComponent v-bind="childProps" />
</template><script setup>
import { ref } from 'vue';
import ChildComponent from './ChildComponent.vue';const childProps = ref({title: '动态标题',content: '动态内容'
});
</script>

在子组件 ChildComponent 中,我们可以通过 props 接收传递的属性值:

<template><div><h1>{{ title }}</h1><p>{{ content }}</p></div>
</template><script setup>
import { defineProps } from 'vue';const props = defineProps(['title', 'content']);
</script>

八、总结

v-bind 是 Vue 中最基础、最常用的指令之一,在 Vue 3 中,它在 <script setup> 语法糖下更加简洁。本文详细介绍了 v-bind 的各种用法,包括绑定单个属性、多属性对象、Class 和 Style 绑定等。掌握 v-bind 的使用技巧,可以让 Vue 组件开发更高效。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/16627.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

VUE实现通话:边录边转发送语言消息、 播放pcm 音频

文章目录 引言I 音频协议音频格式:音频协议:II 实现协议创建ws对象初始化边录边转发送语言消息 setupPCM按下通话按钮时开始讲话,松开后停止讲话播放pcm 音频III 第三库recorderplayer调试引言 需求:电台通讯网(电台远程遥控软件-超短波)该系统通过网络、超短波终端等无线…

无人机遥控器基础讲解——CKESC电调小课堂08

无人机遥控器是控制无人机飞行的重要设备&#xff0c;以下是对其的详细介绍&#xff1a; CKESC-专业级电调研发生产供应商http://www.ckesc.com 一、外观与布局 1. 通常由两个摇杆、多个功能按钮、一个显示屏和天线组成。 2. 摇杆一般位于遥控器的中央位置&#xff0c;用于控…

谷歌新作:Unbounded开放世界RPG,AI定义无限游戏新纪元

在开放世界和角色扮演游戏的领域里&#xff0c;玩家们总是渴望着那种无拘无束的自由体验。他们梦想着一个没有空气墙阻隔&#xff0c;没有剧情杀限制&#xff0c;没有任何交互限制的游戏世界。现在&#xff0c;这个梦想可能即将成真。谷歌联合北卡罗来纳大学教堂山分校推出的Un…

Qt文件目录操作

文件目录操作相关类 Qt 为文件和目录操作提供了一些类&#xff0c;利用这些类可以方便地实现一些操作。Qt 提供的与文件和目录操作相关的类包括以下几个&#xff1a; QCoreApplication&#xff1a;用于提取应用程序路径&#xff0c;程序名等文件信息&#xff1b;QFile&#x…

网页web无插件播放器EasyPlayer.js H.265流媒体播放器的decoder.js报Unexpected token ‘<‘错误

EasyPlayer.js H.265流媒体播放器属于一款高效、精炼、稳定且免费的流媒体播放器&#xff0c;可支持多种流媒体协议播放&#xff0c;支持H.264与H.265编码格式&#xff0c;性能稳定、播放流畅&#xff1b;支持WebSocket-FLV、HTTP-FLV&#xff0c;HLS&#xff08;m3u8&#xff…

渗透测试之信息收集 DNS主机发现探测方式NetBIOS 协议发现主机 以及相关PorCheck scanline工具的使用哟

目录 主机发现 利用NetBIOS 协议发现主机 利用TCP/UDP发现主机 PorCheck scanline 利用DNS协议发现主机 主机发现 信息收集中的一项重要工作是发现内网中的主机、数据库、IP段网络设备、安全设备等资产&#xff0c;以便于更快地获取更多权限和密码&#xff0c;更加接近红…

Nginx SSL+tomcat,使用request.getScheme() 取到https协议

架构上使用了 Nginx tomcat 集群, 且nginx下配置了SSL,tomcat no SSL,项目使用https和http协议。 发现 request.getScheme() //总是 http&#xff0c;而不是实际的http或https request.isSecure() //总是false&#xff08;因为总是http&#xff09; request.getRemoteAddr(…

[Redis] Redis服务集群

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…

期权懂|上证50ETF期权的交易时间是什么时候?

期权小懂每日分享期权知识&#xff0c;帮助期权新手及时有效地掌握即市趋势与新资讯&#xff01; 上证50ETF期权的交易时间是什么时候&#xff1f; 一、开盘集合竞价时间‌&#xff1a; 上午9:15至9:25。在这段时间内&#xff0c;投资者可以提交或撤销委托&#xff0c;但不会立…

FPGA 第7讲 简单组合逻辑译码器

时间&#xff1a;2024.11.15 一、学习内容 1.译码器 译码是编码的逆过程&#xff0c;在编码时&#xff0c;每一种二进制代码&#xff0c;都赋予了特定的含义&#xff0c;即都表示了一个确定的信号或者对象。把代码状态的特定含义翻译出来的过程叫做译码&#xff0c;实现译码操…

jmeter常用配置元件介绍总结之断言

系列文章目录 安装jmeter jmeter常用配置元件介绍总结之断言 9.断言9.1.响应断言9.2.JSON断言9.3.大小断言9.4.JSON JMESPath Assertion9.5.断言持续时间9.6.MD5Hex断言9.7.XPath断言9.8.XPath2 Assertion 9.断言 检查测试中得到的响应数据结果是否符合预期 9.1.响应断言 功…

莱特币转型MEME币:背后隐含的加密市场现象

随着加密市场的风云变幻&#xff0c;莱特币&#xff08;LTC&#xff09;这款曾经的“老牌矿币”近日以自嘲式推文宣布“自己是一个MEME币”&#xff0c;迅速引发了市场的广泛关注和一波围绕MEME币的炒作浪潮。这一举动看似玩笑&#xff0c;却反映出当前加密市场的一种微妙转变&…

【网页设计】CSS3 进阶(动画篇)

1. CSS3 2D 转换 转换&#xff08;transform&#xff09;是CSS3中具有颠覆性的特征之一&#xff0c;可以实现元素的位移、旋转、缩放等效果 转换&#xff08;transform&#xff09;你可以简单理解为变形 移动&#xff1a;translate旋转&#xff1a;rotate缩放&#xf…

系统架构设计师:软件架构的演化和维护

软件架构一般会经历初始设计、实际使用、修改完善和退化弃用的过程&#xff0c;其中修改完善的过程实际上就是软件架构的演化和维护过程&#xff0c;演化和维护的目的就是为了使软件能够适应环境的变化而进行的纠错性修改和完善性修改等。 软件架构的演化和维护过程是一个不断…

如何在 Ubuntu 上安装 Jupyter Notebook

本篇文章将教你在 Ubuntu 服务器上安装 Jupyter Notebook&#xff0c;并使用 Nginx 和 SSL 证书进行安全配置。 我将带你一步步在云服务器上搭建 Jupyter Notebook 服务器。Jupyter Notebook 在数据科学和机器学习领域被广泛用于交互式编码、可视化和实验。在远程服务器上运行…

IoT [remote electricity meter]

IoT [remote electricity meter] 物联网&#xff0c;远程抄表&#xff0c;电表数据&#xff0c;举个例子

使用ivew-ui-plus 的Submit组件踩坑 injection “LoginInstance“ not found 记录 问题原因分析与解决方案

问题描述: 在下面这个页面中 注册按钮使用了view-ui-plus的Submit组件 结果控制台报错 runtime-core.esm-bundler.js:257 Uncaught TypeError: Cannot read properties of undefined (reading handleSubmit)at Proxy.handleSubmit (viewuiplus.min.esm.js:32610:26)at callW…

力扣 LeetCode 1047. 删除字符串中的所有相邻重复项(Day5:栈与队列)

解题思路&#xff1a; 方法一&#xff1a;栈 class Solution {public String removeDuplicates(String s) {Deque<Character> stack new ArrayDeque<>();for (char c : s.toCharArray()) {if (stack.isEmpty() || stack.peek() ! c) stack.push(c);else stack.p…

无人机检测车辆——多目标检测

目录 YOLOv3&#xff08;You Only Look Once version 3&#xff09;简介 YOLOv3 的主要特点 YOLOv3 的结构 1. 特征提取网络&#xff08;Backbone&#xff09; 2. 检测头&#xff08;Head&#xff09; 3. 输出层 YOLOv3 损失函数 YOLOv3 的优势 YOLOv3 的应用 YOLOv3…

集群搭建高可用

contos7.9 部署3节点 hadoop3.4 高可用集群 contos7.9 部署3节点 hadoop3.4 高可用集群环境信息Hadoop与Zookeeper的版本对应关系服务器角色分配使用端口服务器配置配置免密登录服务器配置初始化 init_server.sh配置主机名映射所有节点配置 hosts文件 hadoop 安装环境配置下载安…