实现动态组件的方式

embedded/2024/10/22 23:44:39/

一、<component :is="放置组件名"></component>(常用)

我们可以定义一个数据并将该数据作为 component 元素的 is 属性值,这个数据保存了组件的名称,当我们需要切换组件时,只需要改变数据所保存的内容即可。

使用 keep-alive 组件与动态组件结合,可以实现在同一挂载点切换显示不同的组件,并且保持组件的状态。比如说第一个组件做了加法,页面展示了新计算出来的数值,使用 keep-alive 可以使得切换到其他组件后再切回来数值保持不变。

如果想在刷新页面后保持组件不变的话,那就得把数据和组件名这些存起来了。

示例代码如下:

javascript"><template><div class="container"><!-- 使用属性绑定指令将指定的数据绑定到属性中 --><keep-alive><component v-bind:is="show"></component></keep-alive><button @click="transfer()">Transfer</button></div>
</template><script>
// 导入组件
import First from "./dynamicCom/firstAssembly.vue";
import Last from "./dynamicCom/lastAssembly.vue";export default {// 定义数据data() {return {show: "First",};},// 注册组件components: {First,Last,},// 定义事件处理函数methods: {transfer() {if (this.show === "First") {this.show = "Last";} else {this.show = "First";}},},
};
</script><style>
</style>

二、 使用<router-view></router-view>(也常用)

 首先要配置路由
javascript">// router.js  
import Vue from 'vue';  
import Router from 'vue-router';  
import ComponentA from './components/ComponentA.vue';  
import ComponentB from './components/ComponentB.vue';  Vue.use(Router);  export default new Router({  routes: [  {  path: '/component-a',  name: 'ComponentA',  component: ComponentA  },  {  path: '/component-b',  name: 'ComponentB',  component: ComponentB  }  // 可以添加更多的路由配置  ]  
});

在上面的配置中,我们定义了两个路由,分别对应 ComponentA 和 ComponentB 这两个组件。当访问 /component-a 路径时,ComponentA会被渲染;当访问/component-b路径时,ComponentB会被渲染。 

其次在入口文件引入并使用这个路由配置
javascript">// main.js  
import Vue from 'vue';  
import App from './App.vue';  
import router from './router'; // 引入路由配置  new Vue({  router, // 将路由配置注入到Vue实例中  render: h => h(App)  
}).$mount('#app');
最后试试在根组件 App.vue 中使用 <router-view> 来显示当前路由对应的组件
javascript"><!-- App.vue -->  
<template>  <div id="app">  // 这里用的是声明式路由,在js中换成编程式路由也是一样的效果<router-link to="/component-a">Go to Component A</router-link>  <router-link to="/component-b">Go to Component B</router-link>  <router-view></router-view> <!-- 这里会根据当前路由显示对应的组件 -->  </div>  
</template>

在上面的模板中,<router-link>用于创建导航链接,to属性指定了链接的目标路由。<router-view>是一个占位符,它会根据当前的路由动态地渲染对应的组件。

当用户点击“Go to Component A”链接时,URL会变为/component-a,并且ComponentA会被渲染到<router-view>的位置。同样地,点击“Go to Component B”链接会切换到ComponentB


http://www.ppmy.cn/embedded/11860.html

相关文章

2232: 【数学】因子个数

题目描述 对于任意给定的一个正整数&#xff0c;计算其因数个数。 输入 输入正整数N。 输出 输出N的因子个数。 样例输入 6 样例输出 4 Code: #include<bits/stdc.h> using namespace std; int c(int n){int cu2;double ksqrt(n);for(int i2;i<k;i){if(n%i…

Linux 第一章

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C&#xff0c;linux &#x1f525;座右铭&#xff1a;“不要等到什么都没有了…

Json三方库介绍

目录 Json是干什么的Json序列化代码Json反序列化代码 Json是干什么的 Json是一种轻量级的数据交换格式&#xff0c;也叫做数据序列化方式。Json完全独立于编程语言的文本格式来存储和表述数据。易于人阅读和编写&#xff0c;同时也易于机器解析和生成&#xff0c;并有效地提升…

贪心算法练习day.1

理论基础 贪心算法是一种常见的解决优化问题的方法&#xff0c;其基本思想就是在问题的每个决策阶段&#xff0c;都选择当前看起来最优的选择&#xff0c;即贪心地做出局部的最优决策&#xff0c;以此得到全局的最优解&#xff0c;例如在十张面额不同的钞票&#xff0c;让我们…

Debian 12.5(代号 “Bookworm“)中安装中文支持

在 Debian 12.5&#xff08;代号 "Bookworm"&#xff09;中安装中文支持通常涉及以下几个步骤&#xff1a; 1. **选择语言**&#xff1a; 在安装过程中&#xff0c;安装程序会询问您选择界面语言&#xff0c;您可以选择中文。 2. **安装中文语言包**&#xff1a…

MapReduce案例-电影网站数据统计分析

本文适合大数据初学者学习MapReduce统计分析业务问题的步骤和基础的MapReduce编程方法&#xff0c;初步掌握Hadoop对计算任务的管理。 本文末尾有全部数据集和完整代码连接。 1.准备工作 安装Hadoop:Hadoop 3.3.2 离线安装-CSDN博客 按照好Hadoop之后要检查一下datanode运行情况…

【Git教程】(十五)二分法排错 — 概述及使用要求,执行过程及其实现(用二分法人工排错或自动排错),替代解决方案 ~

Git教程 二分法排错 1️⃣ 概述2️⃣ 使用要求3️⃣ 执行过程及其实现3.1 用二分法人工排错3.2 用二分法自动排错 4️⃣ 替代解决方案 在开发过程中&#xff0c;我们经常会突然遇到一个错误&#xff0c;是之前早期版本在成功通过测试时没有出现过的。这时候&#xff0c;时下较…

web server apache tomcat11-02-setup 启动

前言 整理这个官方翻译的系列&#xff0c;原因是网上大部分的 tomcat 版本比较旧&#xff0c;此版本为 v11 最新的版本。 开源项目 从零手写实现 tomcat minicat 别称【嗅虎】心有猛虎&#xff0c;轻嗅蔷薇。 系列文章 web server apache tomcat11-01-官方文档入门介绍 web…