Vue3中的动态组件,使用动态组件实现页面的切换。

目录

本文主要介绍Vue3中的动态组件,使用动态组件实现页面的切换。

动态组件

在Vue3中,动态组件是通过<component>元素来实现的。动态组件可以根据所设置的组件名称动态地渲染不同的组件。

动态组件可以通过以下步骤来使用:

  1. 在Vue组件中使用<component>元素,并将组件名称设置为一个变量,如<component :is="currentComponent"></component>。

  2. 在组件中定义一个变量来存储当前要渲染的组件名称,如currentComponent。

  3. 动态修改currentComponent变量的值,可以通过一个组件中的事件来触发,例如点击按钮或根据数据的不同进行切换。

例如,在下面的例子中,我们可以使用<component>元素来渲染不同的组件:
FirstComponent.vue

html 复制代码
<template>
	<div>FirstComponent</div>
</template>

<script>
</script>

<style>
</style>

SecondComponent.vue

html 复制代码
<template>
	<div>SecondComponent</div>
</template>

<script>
</script>

<style>
</style>

App.vue

html 复制代码
<template>
  <div>
    <button @click="toggleComponent">Toggle Component</button>
    <component :is="currentComponent"></component>
  </div>
</template>

<script>
import FirstComponent from './components/FirstComponent.vue'
import SecondComponent from './components/SecondComponent.vue'

export default {
  components: {
    FirstComponent,
    SecondComponent
  },
  data() {
    return {
      currentComponent: 'FirstComponent'
    }
  },
  methods: {
    toggleComponent() {
      if (this.currentComponent === 'FirstComponent') {
        this.currentComponent = 'SecondComponent'
      } else {
        this.currentComponent = 'FirstComponent'
      }
    }
  }
}
</script>

在这个例子中,我们有两个组件 FirstComponent 和 SecondComponent,并且在 data 中定义了一个 currentComponent 变量,来存储当前要渲染的组件名称。通过点击按钮的事件来切换组件。

  1. 首次进入图1-1所示:

    图1-1 默认状态

  2. 点击Toggle Component按钮后,如图1-2所示:

    图1-2 点击了1次Toggle Component按钮,切换到了SecondComponent组件。

  3. 再次点击Toggle Component按钮后,如图1-3所示:

    图1-3 第2次点击Toggle Component按钮,切换回了FirstComponent组件。

以上就是通过点击按钮的方式,实现了使用动态组件切换页面的功能。

相关推荐
web打印社区1 分钟前
HTML5 静默打印:前端页面怎么调用打印机且尽量不弹窗
前端·javascript·vue.js·pdf·html·html5
Python大数据分析1 分钟前
开源免费、AI 驱动的 Web 打印设计器 OpenPrint:从拖拽设计到 ERP 对接全流程实战
前端·人工智能·开源
溪语流沙11 分钟前
【每天一个CSS | Day11】赛博朋克故障风文字:红青分离 + 切片抖动
前端·css
liangshanbo12151 小时前
React Fiber:从“解决卡顿”到完整更新链路
前端·javascript·react.js
Timmy1 小时前
前端转全栈笔记:讲框架之前,先把 TypeScript 这关过了
前端·人工智能·node.js
计算机魔术师1 小时前
年收入650亿、亏420亿,Anthropic凭什么敢叫价万亿?
前端
Frag0ut1 小时前
Chrome Canary 最新实验功能:AI Mode、按设备筛选历史记录与 Gemini 自动改密
前端·人工智能·chrome·dev·beta·canary·最新实验功能
雪芽蓝域zzs1 小时前
第3节:el-select 弹窗定位、滚动穿透与挂载容器(popper-append-to-body /teleported)
vue.js·elementui
anew___1 小时前
《从零手写操作系统 (19):Ext2文件系统实战——从内存到磁盘的跨越》
java·服务器·前端·数据库·算法
吴声子夜歌2 小时前
Nginx应用与运维——Nginx Web服务应用实战(HTTPS安全服务器的搭建)
运维·前端·nginx