Vue3 内置指令完全指南
专为编程小白设计:通俗易懂的指令解释 + 实用示例
指令导航
v-bind 属性绑定
v-model 双向绑定
v-on 事件绑定
v-if 条件渲染
v-show 条件显示
v-for 列表渲染
v-html 原始HTML
v-text 文本插值
v-pre 原始显示
v-once 单次渲染
v-memo 性能优化
v-cloak 防闪屏
v-slot 插槽内容
v-bind 动态属性绑定
作用: 动态绑定HTML元素的属性或组件的props
大白话: 让HTML属性可以动态变化(例如:根据数据改变图片地址、链接、样式等)
使用方式:
- 基本用法:<div v-bind:id=”dynamicId”></div>
- 简写:<div :id=”dynamicId”></div> (推荐)
- 绑定多个属性:<div v-bind=”objectOfAttrs”></div>
示例代码:
<!– 绑定class –>
<div :class=”{ active: isActive }”>动态样式</div>
<!– 绑定style –>
<div :style=”{ color: textColor, fontSize: size + ‘px’ }”>动态样式</div>
<!– 绑定图片地址 –>
<img :src=”imagePath” alt=”动态图片”>
<div :class=”{ active: isActive }”>动态样式</div>
<!– 绑定style –>
<div :style=”{ color: textColor, fontSize: size + ‘px’ }”>动态样式</div>
<!– 绑定图片地址 –>
<img :src=”imagePath” alt=”动态图片”>
注意:
- 使用简写的冒号:更简洁
- 绑定class和style时,Vue提供了增强功能(对象/数组语法)
- 绑定布尔属性(如disabled)时,当值为null或undefined时该属性会被移除
v-model 双向数据绑定
作用: 在表单元素或组件上创建双向数据绑定
大白话: 自动同步表单输入和应用状态,一个变另一个跟着变
使用方式:
- 表单元素:<input v-model=”message”>
- 组件上:<CustomInput v-model=”searchText” />
- 修饰符:.lazy、.number、.trim
示例代码:
<!– 文本输入 –>
<input v-model=”username” placeholder=”输入用户名”>
<p>用户名: {{ username }}</p>
<!– 复选框 –>
<input type=”checkbox” v-model=”isAgreed”>
<span>同意协议: {{ isAgreed ? ‘是’ : ‘否’ }}</span>
<!– 下拉框 –>
<select v-model=”selectedOption”>
<option value=”A”>选项A</option>
<option value=”B”>选项B</option>
</select>
<input v-model=”username” placeholder=”输入用户名”>
<p>用户名: {{ username }}</p>
<!– 复选框 –>
<input type=”checkbox” v-model=”isAgreed”>
<span>同意协议: {{ isAgreed ? ‘是’ : ‘否’ }}</span>
<!– 下拉框 –>
<select v-model=”selectedOption”>
<option value=”A”>选项A</option>
<option value=”B”>选项B</option>
</select>
注意:
- 本质上是:value + @input的语法糖
- 在组件上使用时,需要在组件内声明modelValue prop并触发update:modelValue事件
- Vue3支持多个v-model绑定:v-model:title=”pageTitle”
指令交互演示区
在真实Vue环境中体验指令效果
v-model 演示
实时显示: {{ message }}
v-bind 演示
v-if 和 v-show 对比
v-if:元素被创建/销毁
v-show:只是显示/隐藏