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

什么是动态组件以及使用场景

文章目录

  • 一、vue中的动态组件是什么?有什么用?
  • 二、使用demo
    • 1.tab页签中的使用
    • 2.模拟新闻页demo
  • 三、用keep-alive包裹,保持状态
  • 总结


一、vue中的动态组件是什么?有什么用?

动态组件指可以动态切换组件的显示和隐藏。

使用场景:比如,某些场景会需要在两个组件间来回切换,如Tab界面;再比如,新闻详情页,不确定要渲染的是图片相关组件还是文件相关组件,有可能都渲染或渲染其中一个或其中多个混合。不知道渲染什么类型的组件,可以用动态组件。

写法:

  • <component>是组件的占位符
  • 通过is属性动态指定要渲染的组件名称
  • <component is ="要渲染的组件的名称"></component>
    点击跳转动态组件的官网地址

二、使用demo

1.tab页签中的使用

代码如下(示例):

<template><el-tabsv-model="activeName"@tab-click="handleClick"><el-tab-pane label="页签1" name="组件1">页签1</el-tab-pane><el-tab-pane label="页签2" name="组件2">页签2</el-tab-pane></kui-tabs><keep-alive><!-- 动态组件 --><component :is="组件1"></component></keep-alive>
</template>
<script setup>import 组件1 from './组件1.vue'import 组件2 from './组件2.vue'
// ....activeName = '页签1'handleClick(tab) {this.activeName = tab.name;}
</script>

2.模拟新闻页demo

代码如下(示例):

<template><div><!-- 动态组件 --><div v-for="(val, key) in newsData" :key="key"><component :is="val.type" :data="val.data"/></div></div>
</template>
<script>import text form './text.vue'import img from './img.vue'...export default {...data() {return {newsData: [{type: 'text', data:[]},{type: 'img', data:[]},...]}}}
</script>

三、用keep-alive包裹,保持状态

当使用<component :is="..."> 来在多个组件间作切换时,被切换掉的组件会被卸载。我们可以通过<KeepAlive>组件强制被切换掉的组件仍然保持“存活”的状态。

<!-- currentTab 改变时组件也改变 --><keep-alive><component :is="tabs[currentTab]"></component></keep-alive>

总结

动态组件可以动态切换组件的显示与隐藏。
不知道渲染什么类型的组件,需要根据数据确定组件类型时,可以使用动态组件。

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

相关文章:

  • CRM销售管理系统如何提高销售效率
  • 纯小白安卓刷机1
  • C高级day4循环语句
  • Linux 操作系统云服务器安装部署 Tomcat 服务器详细教程
  • 【易盾点选】
  • vue中打印指定dom元素
  • OpenCV(三十六):霍夫直线检测
  • 文心一言 VS 讯飞星火 VS chatgpt (91)-- 算法导论8.3 4题
  • keep-alive缓存三级及三级以上路由
  • vite vue项目 运行时 \esbuild\esbuild.exe 缺失 错误码 errno: -4058, code: ‘ENOENT‘,
  • favicon.ico网站图标不显示问题 Failed to load resource: net::ERR_FILE_NOT_FOU
  • 微服务·架构组件之服务注册与发现-Nacos
  • Linux驱动【day2】
  • 4、Nginx 配置实例-反向代理
  • 2023年世界机器人大会回顾
  • Mac系统 AndroidStudio Missing essential plugin:org.jetbrains.android报错
  • 读书笔记:多Transformer的双向编码器表示法(Bert)-1
  • 第二证券:股利支付率和留存收益率的关系?
  • 煤矿虚拟仿真 | 采煤工人VR虚拟现实培训系统
  • buuctf crypto 【[GXYCTF2019]CheckIn】解题记录
  • 微服务05-Docker基本操作
  • OpenHarmony创新赛|赋能直播第三期
  • docker镜像详解
  • 二叉树的顺序结构以及堆的实现——【数据结构】
  • 手写一个摸鱼神器:使用python手写一个看小说的脚本,在ide中输出小说内容,同事直呼“还得是你”
  • 【Python 实战】---- 实现批量图片的切割
  • MAYA粒子基础_场
  • 趣解设计模式之《我买了宝马,为啥不让我停这?》
  • MyBatis Plus 中 LocalDateTime 引发的一些问题和解决办法
  • 谁懂啊!自制的科普安全手册居然火了