<template>
<view v-show="false" style="display: flex; background-color: red"> 你好 </view>
<uni-popup ref="popup">
<view v-show="false" style="display: flex; background-color: red"> 你好 </view>
<view v-show="false" style="display: flexbox; background-color: yellow"> 你好 </view>
<view v-show="false" style="display: block; background-color: green"> 你好 </view>
<view v-show="false" style="background-color: blue"> 你好 </view>
<view v-if="false" style="display: flex; background-color: pink"> 你好 </view>
</uni-popup>
<button @click="open">popup</button>
</template>
<script setup lang="ts">
import { ref } from "vue";
const popup = ref(null);
function open() {
popup.value.open();
}
</script>
上面代码的效果图如下:

表面这层灰的是弹出层,而v-show="false"所在的代码有好几条,他们的内容是一样的,
- 第一条你好是在弹出层以外,采用flex布局,没有显示出来,效果正确
- 第二条你好是红底的,采用flex布局,被显示出来了,效果不正确
- 第三条你好是黄底的,采用flexbox布局,没有显示出来,效果正确
- 第四条你好是绿底的,采用block布局,被显示出来了,效果不正确
- 第五条你好是蓝底的,没有采用布局,没有显示出来,效果正确
- 第六条采用
v-if,不会存在上面的问题
结论:
在uni-popup中,v-show搭配某些布局,会使得v-show失效。
当然,可能不止uni-popup一个组件。
本文探讨了在uni-app框架内uni-popup组件中使用v-show指令时遇到的问题。当v-show与特定布局(如flex、flexbox、block等)结合时,可能导致v-show的预期效果失效,使得元素意外显示。作者通过实例展示了不同布局下v-show的行为,并提出了可能存在的组件兼容性问题。解决方案可能涉及到避免使用特定布局或者改用v-if来控制元素的显示。
6790

被折叠的 条评论
为什么被折叠?



