记录一次Vue3中v-show=false组件依旧展示的问题

46 阅读1分钟

最近开发过程中发现一个关于v-show的展示问题,直接上代码

父组件

 <template>
  <div id="app">
    <h3>这里是App</h3>
    <Child v-show="showchild"/>
  </div>
</template>
import Child from './components/Child.vue';
import { ref } from 'vue';
export default {
  components:{Child},
  setup() {
    let showchild = ref(false)
    return { showchild }
  },
}

子组件

<template>
    <div class="child1">这里是child</div>
    <div class="child2">这里是child</div>
</template>
<style>
.child1 {
    background-color: skyblue;
    padding: 10px;
}
.child2 {
    background-color: pink;
    padding: 10px;
}
</style>

期望结果是页面中子组件隐藏,然而结果是子组件依旧展示

image.png

查看元素,也没有display:none

image.png

最后发现,将子组件的多个根组件设置为一个根组件时,问题解决

<template>
    <div>
        <div class="child1">这里是child</div>
        <div class="child2">这里是child</div>
    </div>
</template>

image.png

查看元素

image.png