上一篇
场景引入:
凌晨2点,你盯着屏幕上的Vue组件抓狂:“这v-if
和v-show
到底用哪个?为什么我的v-for
渲染出来一堆undefined?!” 😤 别急,今天我们就用“人话”拆解Vue模板语法,顺便告诉你哪些坑千万别踩!
<p>Hello, {{ userName }}!</p> <p>1+1={{ 1+1 }}</p> <!-- 输出:1+1=2 -->
✅ 能做什么:
{{ formatDate(time) }}
) if
语句这种!) ❌ 不能做什么:
if/for
) computed
属性) v-if
vs v-show
<div v-if="isVIP">尊享特权</div> <!-- 条件为假时移除DOM --> <div v-show="hasCoupon">优惠券</div> <!-- 条件为假时隐藏DOM(display:none) -->
💡 选择原则:频繁切换用v-show
,运行时条件变化少用v-if
。
v-for
的正确姿势
<ul> <li v-for="(item, index) in items" :key="item.id"> {{ index }} - {{ item.name }} </li> </ul>
⚠️ 必加key
:避免渲染混乱(用唯一ID,别用index
!)
v-bind:
(或简写 )<img :src="avatarUrl" :class="{ active: isSelected }">
🌟 技巧:绑定对象/数组类名时,用计算属性更清晰!
document.getElementById()
这类操作(用ref
替代) classList
(用:class
绑定) <!-- 错误示例 --> <p>{{ window.innerWidth }}</p> <!-- 模板中无法直接访问window -->
✅ 解决方案:在data
或mounted
中赋值。
methods
或computed
) try/catch
等语句 <template>
标签) *ngIf
这类指令(Vue用v-if
) v-for
和 v-if
一起用?<!-- 不推荐!v-for优先级更高,可能导致性能问题 --> <li v-for="item in list" v-if="item.isActive">{{ item.name }}</li>
✅ 正确做法:用computed
过滤数据后再遍历。
<button @click="handleClick($event, 123)">提交</button> <!-- 注意$event必须显式传递! -->
<div :[dynamicAttr]="value"></div> <!-- dynamicAttr可以是data中的变量 -->
Vue模板语法像乐高积木——用、v-
指令和绑定就能搭出交互页面,但记住:
1️⃣ 逻辑归JS,展示归模板
2️⃣ 复杂计算用computed
3️⃣ 避免直接操作DOM
下次再遇到模板报错,先检查是不是写了“不该写”的内容吧! 🎯
参考Vue 3官方文档及社区实践,截至2025年7月)
本文由 甘妤 于2025-07-30发表在【云服务器提供商】,文中图片由(甘妤)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/487892.html
发表评论