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

Vue 3中实现多个自定义组件之间的切换

        在 Vue 3 中,如果你想在 HTML 页面中实现多个自定义组件之间的切换,你可以使用 Vue 的条件渲染功能,比如 v-if、v-else-if 和 v-else 指令,或者使用 <component> 标签结合 is 属性来动态绑定组件。

1. 打开HBuilder X

图1

2. 新建一个空项目

        文件->新建->项目->uni-app

        填写项目名称:vue3demo

        选择项目存放目录:D:/HBuilderProjects

        一定要注意vue的版本,当前选择的版本为vue3

图2

        点击“创建”之后进入项目界面

图3

        其中各文件的作用

        (1)pages是存放页面的文件夹

        (2)Static是存放图片等资源的文件夹

        (3)Manifest.json是项目的配置文件

        (4)Pages.json是项目的页面配置文件

3. 新建自定义组件

        (1)新建组件存放的文件夹。在项目vue3demo上右键->新建->目录,目录名称:components(不能更改)。

        (2)定义自定义组件。假设有两个组件ComponentA和ComponentB。在目录components上右键->新建组件,组件名称为:ComponentA.vue。

图4

        ComponentA.vue的代码如下:

<template >
	<view class="table">
		<h3>登录</h3>
		用户名:<input class="input" type="text"/>
		密&nbsp;码:<input class="input" type="safe-password"/>
		<button class="btn">登录</button>
	</view>
</template>

<script>
	export default {
		name:"ComponentA",
		data() {
			return {
				
			};
		}
	}
</script>

<style>
	.table{
		width: 300px;
		height: 200px;
		border: 1px solid #ccc;
		text-align: center;
	}
	.input{
		border: 1px solid #ccc;
	}
	.btn{
		margin: 10px;
		background-color: aquamarine;
	}
</style>

图5

        主要包含三个部分

  • <template>组件界面内容
  • <script>组件绑定数据
  • <style>设定组件界面的样式

        (3)同样的方法新建其他组件,在项目vue3demo上右键->新建组件,组件名称为:ComponentB.vue。代码如下:

<template >
	<view class="table">
		<h3>注册</h3>
		用户名:<input class="input" type="text"/>
		密&nbsp;码:<input class="input" type="safe-password"/>
		<button class="btn">注册</button>
	</view>
</template>

<script>
	export default {
		name:"ComponentB",
		data() {
			return {
				
			};
		}
	}
</script>

<style>
	.table{
		width: 300px;
		height: 200px;
		border: 1px solid #ccc;
		text-align: center;
	}
	.input{
		border: 1px solid #ccc;
	}
	.btn{
		margin: 10px;
		background-color: aquamarine;
	}
</style>

4. 在主应用中使用条件渲染

        在你的主应用组件(比如index.vue)中,你可以使用v-if和v-else来根据某个条件(比如一个数据属性)来切换这两个组件。在pages/index/index.vue页面中写入代码:

<template>
  <div id="app">
    <button @click="currentComponent = 'ComponentA'">显示ComponentA</button>
    <button @click="currentComponent = 'ComponentB'">显示ComponentB</button>
    
    <!-- 使用 v-if 和 v-else 来切换组件 -->
    <component :is="currentComponent"></component>
    
    <!-- 或者你也可以使用 v-if 和 v-else-if 单独控制每个组件 -->
    <!--
    <ComponentA v-if="currentComponent === 'ComponentA'" />
    <ComponentB v-else-if="currentComponent === 'ComponentB'" />
    -->
  </div>
</template>

<script>
import ComponentA from '../../components/ComponentA.vue';
import ComponentB from '../../components/ComponentB.vue';

export default {
  name: 'App',
  components: {
    ComponentA,
    ComponentB
  },
  data() {
    return {
      currentComponent: 'ComponentA' // 初始显示的组件
    };
  }
};
</script>

        主要包括四个部分:

  • <template>显示和切换组件的界面
  • <script>引入、注册和绑定组件

        效果如图:

图6

        在这个例子中,我们有两个按钮,每个按钮都绑定了一个点击事件处理器,用于更改 currentComponent 数据属性的值。<component :is="currentComponent"></component>这行代码会根据currentComponent 的值来动态渲染相应的组件。

        你也可以选择使用 v-if 和 v-else-if 单独控制每个组件的渲染,但这通常会增加模板的复杂性,特别是在你有多个组件需要切换时。使用<component>标签和is属性是一种更简洁且可扩展的方法。

5. 运行看效果

        运行->运行到浏览器->Edge

图7

        单击选择“显示ComponentB”

图8


http://www.kler.cn/a/413565.html

相关文章:

  • Qt程序发布及打包成exe安装包
  • hping3工具介绍及使用方法
  • 推荐一款龙迅HDMI2.0转LVDS芯片 LT6211UX LT6211UXC
  • 嵌入式硬件设计:从概念到实现的全流程
  • 使用ENSP实现默认路由
  • 价格分类(神经网络)
  • windows C#-定义和读取自定义特性
  • java对象什么时候被垃圾回收?
  • [MRCTF2020]Transform
  • 【unity小技巧】unity常用的编辑器扩展
  • PHP中类名加双冒号的作用
  • [Android Studio] layoutUI显示顶部标题栏以及常用的标题修改
  • goframe开发一个企业网站 MongoDB 完整工具包18
  • [chrome]黑色界面插件,PDF合并插件
  • 操作系统调度算法——针对实习面试
  • Qt开发:信号与槽的介绍和使用
  • 企业培训系统开发指南:基于源码的企业内训APP解决方案
  • C#基础46-50
  • 什么是域名监控?
  • c++调用python
  • Docker 入门二-安装Docker
  • cocos creator 3.8 俄罗斯方块Demo 10
  • Python 网络爬虫进阶:动态网页爬取与反爬机制应对
  • shell查看服务器的内存和CPU,实时使用情况
  • 若依框架部署在网站一个子目录下(/admin)问题(
  • 嵌入式Linux学习——uboot篇(1)