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

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

vue2写法
html 复制代码
<template>
  <div>
    <h1>标题</h1>
    <p>正文内容</p>
  </div>
</template>
vue3写法
html 复制代码
<template>
    <h1>标题</h1>
    <p>正文内容</p>
</template>
vue3中Fragment特性的一个bug(需要留意的问题)

组件HelloWorld:

html 复制代码
<template>
    <h1>2333</h1>
    <h1>666</h1>
</template>

组件HelloWorld的使用

html 复制代码
<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属性完全是没有的

解决方法

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

组件:

html 复制代码
<template>
  <div>
    <h1>标题</h1>
    <p>正文内容</p>
  </div>
</template>

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

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

相关推荐
学前端的小朱13 小时前
Echarts实现大屏可视化
websocket·echarts·nodejs·vue3·vite·koa·cors
&活在当下&6 天前
element plus的table组件,点击table的数据是,会出现一个黑色边框
vue3·element plus
&活在当下&6 天前
Element plus 下拉框组件选中一个选项后显示的是 value 而不是 label
前端·javascript·vue3·element plus
瑶琴AI前端7 天前
从0到1实现vue3+vite++elementuiPlus+ts的后台管理系统(一)
前端·typescript·vue3
啊·贤16 天前
初级报错:循环引用
前端·javascript·vue3·axios
代码老祖18 天前
vue3+view-ui-plus+vite+less 实现自定义iview样式
前端·ui·vue3·vite·view design
i紸定i20 天前
uniapp使用ucharts修改Y、X轴标题超出换行
微信小程序·小程序·uni-app·vue·vue3·ucharts
Serenity_Qin20 天前
vue3 + ts 使用 el-tree
前端·vue.js·typescript·vue3·element-plus
前端李易安22 天前
vue3中是如何实现双向数据绑定的
前端·javascript·vue.js·vue3
陈逸子风22 天前
(系列十三)Vue3+Echarts搭建超好看的系统面板
vue3·webapi·权限·流程·表单