当前位置: 首页 > news >正文

深入解析 <component :is> 在 Vue3 组合式中的使用与局限

1.问题

说明:在 Vue3 中使用组合式 API 时,动态组件通过 is 属性渲染可能会遇到组件未正确显示的问题。实际写法如下所示:我的目的就是遍历数组顶部组件,里面有个type就是对应的is属性(因为数据放置在数据库,属性值是字符串,不是组件对象)。它渲染出了dom节点就是没有展示。

<script setup>import DashBoardHeader from './dash-board-header/index.vue'
</script><componentv-for="(item,index) in dashBoardHeaderAll.dashBoardHeader":key="index":is="item.type":universalStyle="dashBoardHeaderAll.dashBoardHeaderUniversalStyle":getData="item.data":getTitle="item.title":getStyle="item.style":param="item.param":unit="item.unit"></component>

2.分析

说明:Vue 3 组合式传字符串只会匹配全局注册,不会自动匹配局部注册组件名。官网写法如下,也就是component的值是个组件对象,而不是字符串。

3.解决

说明:我们通过字段映射的方式,让它的属性值变成组件对象。或者注册成全局组件。或者改成选项式写法。

<script setup>
import DashBoardHeader from './dash-board-header/index.vue'const componentsMap = {DashBoardHeader: DashBoardHeader
}
</script><componentv-for="(item,index) in dashBoardHeaderAll.dashBoardHeader":key="index":is="componentsMap[item.type]":universalStyle="dashBoardHeaderAll.dashBoardHeaderUniversalStyle":getData="item.data":getTitle="item.title":getStyle="item.style":param="item.param":unit="item.unit"></component>

4.结论 

  • Vue 2:如果传字符串,会先查找当前组件的局部注册,匹配到就用;找不到再查全局注册。

  • Vue 3 选项式 API:为了兼容 Vue 2,传字符串依然会匹配局部注册组件名。

  • Vue 3 组合式 API(<script setup>):如果传字符串,只会去查全局注册组件名,不会匹配局部注册名;要让它工作,需要传组件对象变量,或者在模板中通过映射把字符串转成组件对象。

http://www.lryc.cn/news/607807.html

相关文章:

  • 【推荐100个unity插件】快速实现汽车控制器——PROMETEO: Car Controller插件
  • 除数博弈(动态规划)
  • [硬件电路-124]:模拟电路 - 信号处理电路 - 测量系统的前端电路详解
  • python匿名函数lambda
  • 【LeetCode刷题指南】--二叉树的前序遍历,二叉树的中序遍历
  • 2025熵密杯 -- 初始谜题 -- Reproducibility
  • 进阶向:自动化天气查询工具(API调用)
  • stm32是如何实现电源控制的?
  • 【7.5 Unity AssetPostprocessor】
  • 2-5 Dify案例实践—利用RAG技术构建企业私有知识库
  • 【最新区块链论文录用资讯】CCF A--WWW 2025 23篇
  • 第三章 用户和权限
  • 【C++】第二十一节—一文详解 | 红黑树实现(规则+效率+结构+插入+查找+验证)
  • 【RK3568 RTC 驱动开发详解】
  • 网安-中间件(updating..)
  • jenkins从入门到精通-P1—九五小庞
  • 【机器学习】非线性分类算法详解(下):决策树(最佳分裂特征选择的艺术)与支持向量机(最大间隔和核技巧)
  • Docker 的网络模式
  • OTC焊接机器人节能技巧
  • Python 第一阶段测试题 答案及解析
  • 机器学习【五】decision_making tree
  • 高性能MCP服务器架构设计:并发、缓存与监控
  • 淘宝小程序的坑
  • Clickhouse#表记录转换为insert语句
  • 【机器学习】“回归“算法模型的三个评估指标:MAE(衡量预测准确性)、MSE(放大大误差)、R²(说明模型解释能力)
  • Human Brain Mapping:静息态功能磁共振成像的回归动态因果建模
  • C语言(长期更新)第7讲:VS实用调试技巧
  • ADB 底层原理
  • Android 运行 deno 的新方法 (3): Termux 胖喵安初
  • 【Leetcode hot 100】49.字母异位词分组