vue3中Fragment特性的一个bug,需要留意的注意事项

vue3中的Fragment 模版碎片特性是什么,简单的理解就是template模板代码不在像vue2中那样必须在根节点在包裹一层节点了。

vue2写法
<template>
  <div>
    <h1>标题</h1>
    <p>正文内容</p>
  </div>
</template>

vue3写法
<template>
    <h1>标题</h1>
    <p>正文内容</p>
</template>

vue3中Fragment特性的一个bug(需要留意的问题)

组件HelloWorld:

<template>
    <h1>2333</h1>
    <h1>666</h1>
</template>

组件HelloWorld的使用

<template>
   <HelloWorld v-if="showBool" /> <!--v-if正常-->
   <HelloWorld v-show="showBool" /> <!--v-show异常,showBool为false还是显示了-->
</template>
<script lang="ts" setup>
import HelloWorld from '../components/HelloWorld.vue'
const showBool = ref(false);
<scrip>

同时控制台waring :

 [Vue warn]: Runtime directive used on component with non-element root node. The directives will not function as intended. 

利用开发者模式看dom结构,发现v-show的display:none属性完全是没有的

微信图片_20240121211403.png
解决方法

还是遵循vue2的写法那样,根节点在包裹一层就行了。
组件:

<template>
  <div>
    <h1>标题</h1>
    <p>正文内容</p>
  </div>
</template>

dom结构发现v-show的display:none属性有了

微信截图_20240121212713.png

目前vue3.4.15这个问题仍然是没有解决的。在使用的时候还是需要注意。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、Vue2 1.1 模板语法 1.1.1 模板的理解 html 中包含了一些 JS 语法代码,语法分为两种,分别...
    Cola_Mr阅读 806评论 0 1
  • Vue基础: 谈谈对组件的理解组件化开发能大幅提高应用开发效率、测试性、复用性常用的组件化技术:属性、自定义事件、...
    Ltraveller阅读 739评论 0 2
  • 本文整理来自深入Vue3+TypeScript技术栈-coderwhy大神新课[https://ke.qq.com...
    Imkata阅读 2,241评论 0 0
  • (一) 基本模块 01基础模板语法 1.1插值语法 -- 解析标签体里的内容 data -> {{}} 里可以写j...
    SteinsGate_5e01阅读 4,134评论 0 31
  • Vue3的变化 官网地址: https://v3.cn.vuejs.org/guide/migration/int...
    JiaoMengYuan阅读 44,021评论 0 38

友情链接更多精彩内容