VUE使用 :v-if 或 :v-show 无效

本文讲述了作者在使用 Vue 框架时,因长时间未接触 v-if 和 v-show 指令,错误地在它们前面添加了冒号,混淆了 v-bind 的缩写。文章提醒开发者,v-if 和 v-show 是 Vue 内置的响应式指令,不需要冒号,直接使用变量或表达式即可。通过这个小故事,强调了理解和正确使用 Vue 指令的重要性。
摘要由CSDN通过智能技术生成

我很傻,真的,很傻。

之前做显示/消除的操作,很多用的都是 component 标签 和 路由 , 一段时间没有用 v-if v-show ,居然闹出这种笑话:

:v-if="isShow"
:v-show="isShow"

可能不熟悉,或者一段时间没有写的朋友使用这两个指令的时候,会写出这种代码。
可能会想,这怎么不对?: 可以引入响应式呀 , 可是,我们真的没有理解错 :的意思嘛?

让我们回顾一下 :的意思:

强制绑定 → v-bind缩写  是  : 

想起来了吗?和v-on事件绑定的缩写是@一样,:只是v-bind的缩写,而 v-if 和 v-show 本身就是VUE的指令体系中的指令,他本身就是响应式的。所以呢,不用再加冒号啦,直接写JS变量或者表达式就可以!

v-if="isShow"
v-show="isShow"
Vue3中,v-if条件使用方式与Vue2基本相同,但是有一些细微的改动。 1. 语法 Vue3中的v-if语法与Vue2相同,使用v-if指令定义条件语句。 ``` <div v-if="condition">...</div> ``` 2. 懒渲染 Vue3中的v-if指令支持懒渲染,即当条件为false时,组件不会被渲染到DOM中,这可以提高页面性能。 ``` <template> <div> <button @click="show = !show">Toggle</button> <div v-if="show" lazy>Lazy Rendered</div> </div> </template> ``` 在上面的例子中,当show为false时,lazy属性会告诉Vue3不要渲染这个组件,直到show为true时再进行渲染。 3. v-if和v-for的优先级问题 在Vue2中,v-for指令的优先级比v-if高,这意味着当v-for和v-if同时存在时,v-if会在v-for之前执行。例如: ``` <div v-for="item in items" v-if="item.show">{{item.name}}</div> ``` 在上面的例子中,如果items数组中的所有item都没有show属性或show属性为false,那么这个v-for指令就会无效,因为没有任何内容会被渲染。 在Vue3中,v-if的优先级高于v-for,这意味着即使没有任何item满足条件,v-for指令仍然会渲染出一个空的列表。 ``` <div v-for="item in items" v-if="item.show">{{item.name}}</div> ``` 在上面的例子中,即使没有任何item满足条件,v-for指令仍然会生成一个空的列表,因为v-if的优先级高于v-for。 需要注意的是,这种行为可能会影响页面性能,因为即使列表为空,Vue3仍然需要执行v-for指令。因此,在使用v-if和v-for时应该谨慎使用
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沧州刺史

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值