vue学习记录之动态组件浅析

 更新时间:2022年10月05日 08:28:50   作者:山外小楼夜听风  
动态组件指的是动态切换组件的显示与隐藏,这篇文章主要给大家介绍了关于vue学习记录之动态组件的相关资料,本文通过示例代码介绍介绍的非常详细,需要的朋友可以参考下

动态组件

释义:运行时在组件之间动态切换的方法。可以将多个条件组件(使用 v-ifv-else-ifv-else 切换的组件)简化为一行代码

看个例子 一般来讲,我们会这样实现一个tabs的切换

<template>
  <div id="app">
    <button v-for="item in tabs" :key="item" @click="onClickTabs(item)">{{item}}</button>
    <Buy v-if="index==='Buy'"/>
    <cutUp v-else-if="index==='cutUp'"/>
    <Fried v-else/>
  </div>
</template>

<script>
import Buy from "./components/Buy.vue";
import cutUp from "./components/cutUp.vue";
import Fried  from "./components/Fried.vue";

export default {
  name: "app",
  components: {
    Buy,
    cutUp,
    Fried,
  },
  created() {},
  data() {
    return {
      tabs: ["Buy", "cutUp", "Fried"],
      index:'Buy'
    };
  },
  methods: {
    onClickTabs(item){

      console.log(item,9999);
      this.index=item
    }
  },
};
</script>
<style lang="scss" scoped>
</style>

而动态组件形式则可以写成

<template>
  <div id="app">
    <button v-for="item in tabs" :key="item" @click="onClickTabs(item)">{{item}}</button>
    <component :is="index"></component>
  </div>
</template>

<script>
import Buy from "./components/Buy.vue";
import cutUp from "./components/cutUp.vue";
import Fried  from "./components/Fried.vue";

export default {
  name: "app",
  components: {
    Buy,
    cutUp,
    Fried,
  },
  created() {},
  data() {
    return {
      tabs: ["Buy", "cutUp", "Fried"],
      index:'Buy'
    };
  },

  methods: {
    onClickTabs(item){
      console.log(item,9999);
      this.index=item
    }
  },
};
</script>
<style lang="scss" scoped>
</style>

在以上例子中,v-if加组件名被componentsis替换掉了。至于其他,则没太多分别。该传datadata,该传状态传状态。

补充:动态调用组件示例

<div id="app">
<button @click="changeComponent('coma')">coma</button>
<button @click="changeComponent('comb')">comb</button>
<button @click="changeComponent('comc')">comc</button>
 
<component :is="com_name"></component>
</div>
 
<script>
var coma = {
template: '<div>aaaa</div>'
}
var comb = {
template: '<div>bbbb</div>'
}
var comc = {
template: '<div>cccc</div>'
}
let vm = new Vue({
el: '#app',
data: {
com_name: 'coma'
},
components: {
coma: coma,
comb: comb,
comc: comc,
},
methods: {
changeComponent: function(name) {
this.com_name = name
}
}
})
</script>

总结

到此这篇关于vue学习记录之动态组件的文章就介绍到这了,更多相关vue动态组件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • axios请求中断的几种方法

    axios请求中断的几种方法

    在实际应用场景中,假如有一个下载或者导出请求,数据量非常大的情况下,接口响应的会很慢,这时候我我们想中断请求,该怎么做呢?本文给大家介绍了axios请求中断的几种方法,需要的朋友可以参考下
    2024-10-10
  • 详解Vue2.0配置mint-ui踩过的那些坑

    详解Vue2.0配置mint-ui踩过的那些坑

    这篇文章主要介绍了详解Vue2.0配置mint-ui踩过的那些坑,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • vue基于electron构建第一个程序

    vue基于electron构建第一个程序

    这篇文章主要为大家介绍了vue基于electron构建第一个程序过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • vuex state中的数组变化监听实例

    vuex state中的数组变化监听实例

    今天小编就为大家分享一篇vuex state中的数组变化监听实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • Vue浅析axios二次封装与节流及防抖的实现

    Vue浅析axios二次封装与节流及防抖的实现

    axios是基于promise的HTTP库,可以使用在浏览器和node.js中,它不是vue的第三方插件,vue-axios是axios集成到Vue.js的小包装器,可以像插件一样安装使用:Vue.use(VueAxios, axios),本文给大家介绍axios的二次封装和节流与防抖
    2022-08-08
  • Vue中computed和watch的区别

    Vue中computed和watch的区别

    在vue项目中我们常常需要用到computed和watch,那么我们究竟在什么场景下使用computed和watch呢?他们之间又有什么区别呢?本将给大家详细的介绍一下,需要的朋友可以参考下
    2023-05-05
  • vue基于viewer实现的图片查看器功能

    vue基于viewer实现的图片查看器功能

    这篇文章主要介绍了vue基于viewer实现的图片查看器的实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-04-04
  • vue3响应式对象的api超全实例详解

    vue3响应式对象的api超全实例详解

    可以把数据变成响应式api的方法叫做响应式api,下面这篇文章主要给大家介绍了关于vue3响应式对象api的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • Vue对象的组成和挂载方式详解

    Vue对象的组成和挂载方式详解

    这篇文章主要介绍了Vue对象的基本组成和Vue对象挂载的几种方式,文中通过代码示例给大家介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-07-07
  • 在Vant的基础上封装下拉日期控件的代码示例

    在Vant的基础上封装下拉日期控件的代码示例

    这篇文章主要介绍了在Vant的基础上封装下拉日期控件的代码示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12

最新评论