<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
一个组件。