关于v-show与v-if的区别以及uni-app小程序中v-show指令失效问题

本文介绍了Vue和uni-app中v-show与v-if的区别,v-show在初次渲染时始终编译并改变display属性,而v-if会根据条件决定是否编译。在uni-app小程序中遇到v-show指令失效的问题,文章提供了两种解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

在 Vue 和 uni-app 的使用过程中,我们常使用到 v-show 与 v-if 。但很多人在用时并不知道两者到底有什么区别,下面就由我来介绍下吧


一、v-show

v-show 是一个根据条件展示元素选项的指令 :

<view v-show="true">Hello!</view>

v-show 不管条件是真还是假,第一次渲染的时候都会编译出来,也就是标签都会添加到 DOM 中。之后切换的时候,通过简单地切换元素的 CSS 属性的 display 来显示或隐藏元素。可以说只是改变 css 的样式,几乎不会影响什么性能。

二、v-if

v-if 指令用于条件性地渲染一块内容:

<view v-if="true">Hello!</view>

在首次渲染的时候,如果条件为假,便不会渲染到 DOM中,且页面当中也不会有这些元素。当条件为真的时候,开始局部编译,动态的向DOM元素里面添加元素。当条件从真变为假的时候,开始局部编译,卸载这些元素,也就是删除。

三、两者区别

  • v-if:的false隐藏,默认是把所在的view给删除,有更高的切换开销
  • v-show:则是直接更改样式,display: block / none,有更高的初始渲染开销

所以对于频繁进行切换状态,选择 v-show 性能更好;运行条件很少改变,选择 v-if 性能更好。

关于在uni-app小程序中v-show指令失效问题有两种解决方法:

代码如下(示例):

<!-- 1.用 v-if 来代替此功能 -->
<view v-if="true">Hello!</view>
<!-- 2.通过 :style 的方式也能达到一样的效果 -->
<view :style="!show ? '' : 'display:none;'">Hello!</view>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值