首页 > 其他分享 >Vue中的动态组件

Vue中的动态组件

时间:2023-05-19 15:36:33浏览次数:46  
标签:Vue name componentName components 组件 componentdemo3 componentdemo1 动态


1,定义:

  • 动态组件就是将几个组件放在一个挂载点下,这个挂载点就是标签,其需要绑定is属性,属性值为父组件中的变量,变量对应的值为要挂载的组件的组件名,然后根据父组件里某个变量来动态显示哪个,也可以都不显示,

2,使用:

<component>元素是vue 里面的一个内置组件。在里面使用 v-bind: is,可以实现动态组件的效果。

 <component :is="currentComponent"></component>

3,例子:

<!--
 * @Descripttion: vue动态组件
 * @version: 
 * @Author: zhangfan
 * @email: [email protected]
 * @Date: 2020-07-03 09:10:28
 * @LastEditors: zhangfan
 * @LastEditTime: 2020-07-13 17:10:31
--> 

<template>
  <div class="container">
    <component v-bind:is="currentTabComponent"></component>
    <div v-for="(item,index) in groupList" :key="index">
      <el-button type="primary" @click="choosencomp(item)">{{item.name}}</el-button>
    </div>
  </div>
</template>

<script>
import componentdemo1 from "@/components/componentdemo1";
import componentdemo2 from "@/components/componentdemo2";
import componentdemo3 from "@/components/componentdemo3";
export default {
  components: {
    componentdemo1,
    componentdemo2,
    componentdemo3
  },
  data() {
    return {
      currentTabComponent: "componentdemo1",
      groupList: [
        {
          name: "组件一",
          componentName: "componentdemo1"
        },
        {
          name: "组件二",
          componentName: "componentdemo2"
        },
        {
          name: "组件三",
          componentName: "componentdemo3"
        }
      ]
    };
  },
  methods: {
    choosencomp(data) {
      this.currentTabComponent = data.componentName;
    }
  }
};
</script>

<style  scoped lang="less">
</style>

4,在动态组件上使用 keep-alive:

<!-- 失活的组件将会被缓存!-->
<keep-alive>
  <component v-bind:is="currentTabComponent"></component>
</keep-alive>


标签:Vue,name,componentName,components,组件,componentdemo3,componentdemo1,动态
From: https://blog.51cto.com/u_16120408/6312742

相关文章

  • Vue过滤器-filter
    1.局部定义过滤器<!--*@Descripttion:vue过滤器-filter*@version:*@Author:zhangfan*@email:[email protected]*@Date:2020-07-0309:10:28*@LastEditors:zhangfan*@LastEditTime:2020-07-1414:13:56--><template><divclass="......
  • Vue中的懒加载和按需加载
    1.懒加载懒加载也叫延迟加载,即在需要的时候进行加载,随用随载。vue项目打包的时候,如果项目比较庞大,那么将会打出一个很大的包,速度比较慢,这个时候可以考虑拆分,不要把所有的内容都打到一个包里面去。1.路由懒加载:我们平常使用router可能如下:importVuefrom'vue'importRouterfro......
  • Vue watch的immediate和deep
    1.immediateimmediate表示立即执行的意思,这样就是说不用等到value变化才会执行,默认的时候就会立刻执行一次。假设我们页面上有一个搜索框,每次输入内容的时候去请求一个接口,同时一进页面的时候需要调一下这个接口,我们可能一般这样写:<!--作者:zhangfan页面名称:watch的immediate和de......
  • 使用Vue脚手架工具快速搭建vue项目
    全局安装webpack使用npm(需要安装node环境)全局安装webpack,打开命令行工具输入:npminstallwebpack-g或者(npminstall-gwebpack),安装完成之后输入webpack-v,如下图,如果出现相应的版本号,则说明安装成功。全局安装vue-cli,在cmd中输入命令:(cnpminstall-g@vue/cli)用vue-cli来构建......
  • Vue生命周期钩子函数
    每个Vue实例创建时,都会经历一系列的初始化过程,同时也会调用相应的生命周期钩子,我们利用这些钩子,可以在合适的时机执行我们的业务逻辑。vue生命周期共分为四个阶段,八个基本钩子函数<script>exportdefault{data(){return{filter:"all",};},beforeCre......
  • less在vue项目中的全局变量设置
    1,使用全局变量的目的:sass或者less都提供变量设置,在需求切换主题的项目中使用less或者sass变量,只要修改变量值,编译后所有用到该变量的样式都会被修改为你想要的效果2,安装sass-resources-loadernpminstallsass-resources-loader--save-dev3,找到build文件夹下面的utils.jsreturn{......
  • Vue.js学习记录之在元素与template中使用v-if指令实例(转贴)
    语法比较简单,直接上代码:<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head> <title></title> <scriptsrc="https://cdn.bootcss.com/vue/2.2.2/vue.......
  • ET介绍——数值组件设计
    类似魔兽世界,moba这种技能极其复杂,灵活性要求极高的技能系统,必须需要一套及其灵活的数值结构来搭配。数值结构设计好了,实现技能系统就会非常简单,否则就是一场灾难。比如魔兽世界,一个人物的数值属性非常之多,移动速度,力量,怒气,能量,集中值,魔法值,血量,最大血量,物理攻击,物理防御,法术攻击,......
  • 动态创建ACTIVITY模式
    还记得我们在代理Activity模式里谈到启动插件APK里的Activity的两个难题吗,由于插件里的Activity没在主项目的Manifest里面注册,所以无法经历系统Framework层级的一系列初始化过程,最终导致获得的Activity实例并没有生命周期和无法使用res资源。使用代理Activit......
  • Vue路由router
    1、总体结构2、路由说明 ......