精华内容
下载资源
问答
  • vue 动态组件

    千次阅读 2019-01-11 16:41:10
    动态组件就是几个组件放在一个挂载点下,然后根据父组件的某个变量来决定显示哪个,或者都不显示。 在挂载点使用 component 标签,然后使用 is =“组件名”,它会自动去找匹配的组件名,如果有,则显示; 看例子: ...
    • 动态组件就是几个组件放在一个挂载点下,然后根据父组件的某个变量来决定显示哪个,或者都不显示。
    • 在挂载点使用 component 标签,然后使用 is =“组件名”,它会自动去找匹配的组件名,如果有,则显示;

    看例子:

    <!-- html部分 -->
    
    <div id="app">
        <component is="one"></component>
    </div>
    
    // js 部分
    
    new Vue({
        el: '#app',
        components: {
            one: {template: '<div>我是线路一</div>'},
            two: {template: '<div>我是线路二</div>'},
            thr: {template: '<div>我是线路三</div>'}
        }
    })
    

    上面代码注册了三个组件,在 component 标签里有个属性 is,is=one,所以页面会渲染名字叫 one 的组件,显示结果如下:

    我是线路一

    如果给 is 属性绑定动态值,那么就可以实现组件的动态切换,例子如下:

    <!-- html 部分 -->
    
    <div id="app">
        <button v-for="item in tabs" @click="change = item.id">
        	{{ item.text }}
        </button>
        <component :is="change"></component>
    </div>
    
    // js 部分
    
    new Vue({
      el: '#app',
      data: {
      	change: 'one' // 默认显示组件 one
        tabs: [
        	{id: 'one', text: '线路一'},
            {id: 'two', text: '线路二'},
            {id: 'thr', text: '线路三'}
        ]
      },
      components: {
      	one: {template: '<div>我是线路一</div>'},
        two: {template: '<div>我是线路二</div>'},
        thr: {template: '<div>我是线路三</div>'}
      }
    })
    

    上面代码用 v-bind 给属性 is 动态传递了值,实现了组件的动态切换,效果如下:

    在这里插入图片描述

    展开全文
  • Vue动态组件

    万次阅读 2018-08-30 01:02:35
    本文将详细介绍Vue动态组件   概述  通过使用保留的 &lt;component&gt; 元素,动态地绑定到它的 is 特性,可以实现动态组件 &lt;div id="example"&gt; &lt;button @click...

    前面的话

      让多个组件使用同一个挂载点,并动态切换,这就是动态组件。本文将详细介绍Vue动态组件

     

    概述

      通过使用保留的 <component> 元素,动态地绑定到它的 is 特性,可以实现动态组件

    <div id="example">
      <button @click="change">切换页面</button>
      <component :is="currentView"></component>
    </div>

    复制代码

    <script>
    var home = {template:'<div>我是主页</div>'};
    var post = {template:'<div>我是提交页</div>'};
    var archive = {template:'<div>我是存档页</div>'};
    new Vue({
      el: '#example',
      components: {
        home,
        post,
        archive,
      },
      data:{
        index:0,
        arr:['home','post','archive'],
      },
      computed:{
        currentView(){
            return this.arr[this.index];
        }
      },
      methods:{
        change(){
          this.index = (++this.index)%3;
        }
      }
    })
    </script>

    复制代码

     

      也可以直接绑定到组件对象上

    <div id="example">
      <button @click="change">切换页面</button>
      <component :is="currentView"></component>
    </div>

    复制代码

    <script>
    new Vue({
      el: '#example',
      data:{
        index:0,
        arr:[
          {template:`<div>我是主页</div>`},
          {template:`<div>我是提交页</div>`},
          {template:`<div>我是存档页</div>`}
        ],
      },
      computed:{
        currentView(){
            return this.arr[this.index];
        }
      },
      methods:{
        change(){
          this.index = (++this.index)%3;
        }
      }
    })
    </script>

    复制代码

     

     

    缓存

      <keep-alive> 包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。和 <transition> 相似,<keep-alive> 是一个抽象组件:它自身不会渲染一个 DOM 元素,也不会出现在父组件链中

    【基础用法】

    复制代码

    <div id="example">
      <button @click="change">切换页面</button>
      <keep-alive>
        <component :is="currentView"></component>  
      </keep-alive>
    </div>

    复制代码

    复制代码

    <script>
    new Vue({
      el: '#example',
      data:{
        index:0,
        arr:[
          {template:`<div>我是主页</div>`},
          {template:`<div>我是提交页</div>`},
          {template:`<div>我是存档页</div>`}
        ],
      },
      computed:{
        currentView(){
            return this.arr[this.index];
        }
      },
      methods:{
        change(){
          let len = this.arr.length;
          this.index = (++this.index)% len;
        }
      }
    })
    </script>

    复制代码

     

    【条件判断】

      如果有多个条件性的子元素,<keep-alive> 要求同时只有一个子元素被渲染

    复制代码

    <div id="example">
      <button @click="change">切换页面</button>
      <keep-alive>
        <home v-if="index===0"></home>
        <posts v-else-if="index===1"></posts>
        <archive v-else></archive>  
      </keep-alive>
    </div>

    复制代码

    复制代码

    <script>
    new Vue({
      el: '#example',
      components:{
        home:{template:`<div>我是主页</div>`},
        posts:{template:`<div>我是提交页</div>`},
        archive:{template:`<div>我是存档页</div>`},
      },
      data:{
        index:0,
      },
      methods:{
        change(){
          let len = Object.keys(this.$options.components).length;
          this.index = (++this.index)%len;
        }
      }
    })
    </script>

    复制代码

     

    activated 和 deactivated】 

      activated 和 deactivated 在 <keep-alive> 树内的所有嵌套组件中触发

    复制代码

    <div id="example">
      <button @click="change">切换页面</button>
      <keep-alive>
        <component :is="currentView" @pass-data="getData"></component> 
      </keep-alive>
      <p>{{msg}}</p>
    </div>

    复制代码

    复制代码

    <script>
    new Vue({
      el: '#example',
      data:{
        index:0,
        msg:'',    
        arr:[
          { 
            template:`<div>我是主页</div>`,
            activated(){
              this.$emit('pass-data','主页被添加');
            },
            deactivated(){
              this.$emit('pass-data','主页被移除');
            },        
          },
          {template:`<div>我是提交页</div>`},
          {template:`<div>我是存档页</div>`}
        ],
      },
      computed:{
        currentView(){
            return this.arr[this.index];
        }
      },
      methods:{
        change(){
          var len = this.arr.length;
          this.index = (++this.index)% len;
        },
        getData(value){
          this.msg = value;
          setTimeout(()=>{
            this.msg = '';
          },500)
        }
      }
    })
    </script>

    复制代码

     

    include和exclude

      include 和 exclude 属性允许组件有条件地缓存。二者都可以用逗号分隔字符串、正则表达式或一个数组来表示

    复制代码

    <!-- 逗号分隔字符串 -->
    <keep-alive include="a,b">
      <component :is="view"></component>
    </keep-alive>
    <!-- 正则表达式 (使用 v-bind) -->
    <keep-alive :include="/a|b/">
      <component :is="view"></component>
    </keep-alive>
    <!-- Array (use v-bind) -->
    <keep-alive :include="['a', 'b']">
      <component :is="view"></component>
    </keep-alive>

    复制代码

      匹配首先检查组件自身的 name 选项,如果 name 选项不可用,则匹配它的局部注册名称(父组件 components 选项的键值)。匿名组件不能被匹配

      <keep-alive include="home,archive">
        <component :is="currentView"></component> 
      </keep-alive>

      上面的代码,表示只缓存home和archive,不缓存posts

    复制代码

    <div id="example">
      <button @click="change">切换页面</button>
      <keep-alive include="home,archive">
        <component :is="currentView"></component> 
      </keep-alive>
    </div>
    <script src="https://unpkg.com/vue"></script>
    <script>
    new Vue({
      el: '#example',
      data:{
        index:0,   
        arr:[
          {name:'home',template:`<div>我是主页</div>`},
          {name:'posts',template:`<div>我是提交页</div>`},
          {name:'archive',template:`<div>我是存档页</div>`}
        ],
      },
      computed:{
        currentView(){
            return this.arr[this.index];
        }
      },
      methods:{
        change(){
          var len = this.arr.length;
          this.index = (++this.index)% len;
        },
      }
    })
    </script>

    复制代码

     

     

    展开全文
  • vue动态组件详解

    千次阅读 2020-08-03 17:34:19
    1、 什么是动态组件 动态组件是指:在一个挂载点使用多个组件,并进行动态切换。可能对于新手来说,这句话有些难理解,什么是挂载点?可以简单的理解为页面的一个位置。 最常见的就是:tab的切换功能。 在vue要实现这...

    1、 什么是动态组件

    动态组件是指:在一个挂载点使用多个组件,并进行动态切换。可能对于新手来说,这句话有些难理解,什么是挂载点?可以简单的理解为页面的一个位置。
    最常见的就是:tab的切换功能。

    在vue要实现这个功能通常用两种方式。一是使用<component>元素的 is 的特性,二是使用 v-if

    方式一:

    <template>
      <div class="hello">
        <h3>使用component 的 is特性</h3>
        <ul>
          <li 
          v-for="(item,index) in tabList" 
          :key="index" 
          style="cursor:pointer" 
          @click="changeView(index)">
          {{item}}</li>
        </ul>
        <component :is="currentView"></component>
      </div>
    </template>
    
    <script>
    // 相关的组件代码在这里不展示
    import shouji from "./shouji";
    import pc from "./pc";
    import shuma from "./shuma";
    export default {
      name: "HelloWorld",
      components: {
        shouji,
        pc,
        shuma,
      },
      data() {
        return {
          index: 0,
          arr: ["shuma", "shouji", "pc"],
          tabList: ["数码", "手机", "电脑"],
        };
      },
      computed: {
        currentView() {
          return this.arr[this.index];
        }
      },
      methods: {
        changeView(index) {
          this.index = index;
        }
      },
    };
    </script>
    

    方式二

    <template>
      <div class="hello">
        <h3>使用v-if实现</h3>
        <ul>
          <li v-for="(item,index) in tabList" :key="index" style="cursor:pointer" @click="change(index)">{{item}}</li>
        </ul>
        <div>
            <shuma v-if="index===0"></shuma>
            <shouji v-else-if="index===1"></shouji>
            <pc v-else></pc>
        </div>
      </div>
    </template>
    
    <script>
    // 相关的组件代码在这里不展示
    import shouji from "./shouji";
    import pc from "./pc";
    import shuma from "./shuma";
    export default {
      name: "HelloWorld",
      components: {
        shouji,
        pc,
        shuma,
      },
      data() {
        return {
          index: 0,
          keppIndex:0,
          arr: ["shuma", "shouji", "pc"],
          tabList: ["数码", "手机", "电脑"],
        };
      },
      computed: {
      },
      methods: {
        change(index) {
          this.index = index;
        }
      },
    };
    </script>
    

    缓存

    上述讲到的方法虽然能够实现了动态组件的切换,但是每次切换都会把上一个组件销毁,然后渲染下一个组件,对于多次切换而言,显然每次的销毁和重新渲染,很大消耗了我们的性能。所以我们可以通过keep-alive对组件进行缓存,对于不显示的组件不是去销毁他,而是使他处理不激活的状态,当需要显示时再去激活。

    <template>
      <div class="hello">
        <h3>使用component 的 is特性 有缓存的组件</h3>
        <ul>
          <li 
          v-for="(item,index) in tabList" 
          :key="index" 
          style="cursor:pointer" 
          @click="changeView(index)">
          {{item}}</li>
          <keep-alive>
    		<component :is="currentView"></component>
    	  </keep-alive>
        </ul>
      </div>
    </template>
    
    <script>
    // 相关的组件代码在这里不展示
    import shouji from "./shouji";
    import pc from "./pc";
    import shuma from "./shuma";
    export default {
      name: "HelloWorld",
      components: {
        shouji,
        pc,
        shuma,
      },
      data() {
        return {
          index: 0,
          arr: ["shuma", "shouji", "pc"],
          tabList: ["数码", "手机", "电脑"],
        };
      },
      computed: {
        currentView() {
          return this.arr[this.index];
        }
      },
      methods: {
        changeView(index) {
          this.index = index;
        }
      },
    };
    </script>
    

    和keep-alive 相关的两个生命周期

    activated() {
         console.log("shouji 手机页面被添加");// 被缓存的组件激活时触发
     },
     deactivated() {
         console.log("shouji 手机页面被移除"); // 被切换到其他组件时触发
     }
    

    keep-alive的两个属性

    include和exclude

    include表示只能允许匹配到的组件生效
    exclude则相反,除了匹配到的组件之外有效

    使用方法:

    
    <!-- 字符串 逗号分隔字符串, a,b 分别为组件名 -->
    <keep-alive include="a,b">
      <component :is="currentView"></component>
    </keep-alive>
    <!-- 正则表达式 -->
    <keep-alive :include="/a|b/">
      <component :is="currentView"></component>
    </keep-alive>
    <!-- 数组 -->
    <keep-alive :include="['a', 'b']">
      <component :is="currentView"></component>
    </keep-alive>
    
    展开全文
  • Vue动态组件component的深度使用

    千次阅读 2020-07-08 06:46:50
    背景介绍最近在封装一些基于Vue+ElementUI的组件,将一些实际项目中常用的,有一定规律的业务进行抽象总结,开发出相应的Vue组件。组件封装首先想到的就是Form组件,在Eleme...

    背景介绍

    最近在封装一些基于Vue+ElementUI的组件,将一些实际项目中常用的,有一定规律的业务进行抽象总结,开发出相应的Vue组件。

    组件封装

    首先想到的就是Form组件,在Element UI提供的Form中,我们需要一个一个的去添加对用的FormItem

    <el-form ref="form" :model="form" label-width="80px">
      <el-form-item label="活动名称">
        <el-input v-model="form.name"></el-input>
      </el-form-item>
      <el-form-item label="活动区域">
        <el-select v-model="form.region" placeholder="请选择活动区域">
          <el-option label="区域一" value="shanghai"></el-option>
          <el-option label="区域二" value="beijing"></el-option>
        </el-select>
      </el-form-item>
    </el-form>
    

    可以发现,每个FormItem的结构都是一样的,只是其中包含的组件不一样。这样,我们就可以通过封装组件的方式,将代码简化,

    <el-form ref="form" :model="form" label-width="80px">
      <my-form-item
                    label="活动名称"
                    v-model="form.name"
                    widget="input"></my-form-item>
      <my-form-item 
                    label="活动区域" 
                    v-model="form.region" 
                    placeholder="请选择活动区域"
                    widget="select"
                    :options="options"></my-form-item>
    </el-form>
    


    **my-form-item.vue **0.1版如下

      <el-form-item :label="title">
        <el-select v-if="widget === 'select'" v-model="form[path]" :clearable="true">
          <el-option v-for="option in options" :key="option.code" :label="option.name" :value="option.code"></el-option>
        </el-select>
        <el-input v-else-if="widget === 'input'" v-model="form[path]" :clearable="true"></el-input>
      </el-form-item>
    

    0.1版,直接使用了v-if来处理widget类型,此时,input和select的逻辑耦合在了一起,再需要其他的组件类型时,这个文件结构会很复杂。

    Vue动态组件

    在Vue中,提供了动态组件component,它可以在动态的选择加载那个组件。

    例子:

    <template>
      <div class="home">
        <img alt="Vue logo" src="../assets/logo.png" />
        <!--    <HelloWorld msg="Welcome to Your Vue.js App" />-->
    
        <a href="#" @click="current = 'hello-world'">Hello World</a>
        <a href="#" @click="current = 'hello-world2'">Hello 2</a>
        <component :is="current" :msg="current" @clicked="handleClicked"></component>
      </div>
    </template>
    
    <script>
    // @ is an alias to /src
    import HelloWorld from '../components/HelloWorld.vue';
    import HelloWorld2 from '../components/HelloWorld2';
    
    export default {
      name: 'Home',
      components: {
        HelloWorld,
        HelloWorld2
      },
      data() {
        return {
          current: 'hello-world'
        };
      },
      methods: {
        handleClicked(e) {
          alert(e);
        }
      }
    };
    

    在component中 :is 属性是必须的,它的内容为在template中使用的组件标签。通过 :is 内容的切换就可以动态的渲染和组件了。

    改造组件

    my-form-item.vue

      <component
        v-if="widgetType"
        :is="currentWidget"
        v-model="form[path]"
        v-bind="$props"
        :label="title"
        :property="mProperty"
      ></component>
    

    my-input.vue

    <template>
      <el-form-item :label="label">
        <el-input :value="value" @input="handleInput"></el-input>
      </el-form-item>
    </template>
    
    

    my-select.vue

    <template>
      <el-form-item :label="label">
        <el-select :value="value" :clearable="true" @input="handleInput">
          <el-option
            v-for="option in widgetOptions"
            :key="option.code"
            :label="option.name"
            :value="option.code"
          ></el-option>
        </el-select>
      </el-form-item>
    </template>
    

    这样input和select就分解成了两个组件,每个组件只需要关注自己的逻辑即可。如果需要扩充新的组件,只要按照规范创建一个新的组件即可。

    总结

    动态组件可以将props完成的传递给实际的组件,同样也可将实际组件的Emit监听到,这样参数传递的问题就解决了,使用动态组件就可以像使用实际一样,开发体验上实现零差别,代码处理逻辑实现解耦

    展开全文
  • Vue 动态组件 & 异步组件原理

    千次阅读 2019-05-05 10:58:38
    动态组件 & 异步组件的存在,使得我们更方便地控制首屏代码的体积,加快加载速度。 抛开具体细节不谈,一个普通 Vue 组件从创建到展现在页面里,主要经历了以下流程: // 组件 Object { template: '<div>...
  • vue 动态组件 通过:is切换组件

    千次阅读 2019-05-27 10:21:41
    在body上绑定is,执行type,type默认是child-one组件所以默认执行child-one组件 可以通过button切换组件
  • Vue动态组件 传值

    千次阅读 2018-04-27 18:27:35
    import User from './User'; import Login from './Login'; components: { User, Login } &amp;amp;amp;lt;component :is=&amp;amp;quot;'User'&amp;amp;quot;&amp;amp;amp;...
  • vue动态组件和slot插槽

    千次阅读 2017-08-17 11:50:11
    '../components/childB/childB.vue' ; import childC from '../components/childC/childC.vue' ; import slotApp from '../components/slot/slot.vue' ; export default { data () { return { test...
  • 需求背景:最近在做的项目中需要完成一个动态表单的需求,可以根据用户需求,动态拖拽添加表单字段,并且配置表单项属性,之前的一个版本是前后预定好一些多个了几个字段,表单设计的一个表单项就对应一个数据库中的...
  • vue动态组件切换(选项卡)

    千次阅读 2019-01-11 11:40:00
    vue动态组件 <template :is='变量'></template> 可以通过改变变量,来改变template的替换内容。达到选项卡的功能 如果想要切换保持不重新创建,用<keep-alive>标签。 但是请注意:那个滚动...
  • 多读书还是有好处,前段时间,用vue做了一个动态切换tab的项目,如果初学者的做法就是用路由进行跳转,但是今天闲来没事看教程和书发现还有一种做法,就是用component的is,即多个组件可以使用同一个挂载点,根据条件...
  • vue 动态组件【详解】component :is

    千次阅读 2020-12-31 20:00:36
    vue 动态组件用于实现在指定位置上,动态加载不同的组件,核心代码为: <component :is="componentTag"></component> data() { return { componentTag: '', } }, componentTag 为自定义的变量,...
  • vue 动态设置组件高度 虚拟动态星级 (vue-dynamic-star-rating) A Highly Customizable, easy-to-use elegant stars rating component (similar to Google Play) 高度可定制,易于使用的优雅星级评定组件(类似于...
  • vue动态组件使用及传值

    千次阅读 2020-10-16 10:22:23
    在项目中常常需要切换不同的组件,这时候我们就可以使用vue内置的动态组件的方式来实现。 component 组件:在页面中通过使用component元素,在根据组件中的is属性来动态的切换不同的组件。 demo: <template> /...
  • vue学习】动态组件和异步组件

    千次阅读 2019-07-24 14:00:35
    动态组件 有的时候,在不同组件之间进行动态切换是非常有用的,比如在一个多标签的界面里: is 上述内容可以通过 Vue 的 <component> 元素加一个特殊的 is 特性来实现 <component v-bind:is=...
  • VUE 实现动态组件

    千次阅读 2020-05-11 09:28:13
    <template> <div class="logmangement"> <!-- 上面按钮--> <div class= "buttontop" > <el-form class="button">...el-button @click="loginlog" :type="button11" size="mini">... .
  • VUE组件动态注册和动态加载

    万次阅读 2019-05-13 23:15:51
    每一类视图都有一个独立的.vue组件,在界面化管理平台上,要实现可以动态的新增视图组件,同时修改的时候可以随意的修改选择那一类视图。而且随着项目的扩大,基础视图组件的也会随之增加,即:基础视图组件的个数是...
  • Vue 动态显示组件 component :is

    千次阅读 2020-05-16 10:33:50
    1、导入所需的组件 1、点击左侧按钮时,将对应组件的名字保存进数组中 <ul class="components-list"> // 点击时,将对应组件名保存进数组 <li @click="dragStart('oneDiv')" data-name="oneDiv">...
  • Vue中什么是动态组件

    千次阅读 2019-09-30 10:46:23
    简单的说,动态组件就是将几个组件放在一个挂载点下,这个挂载点就是标签,其需要绑定is属性,属性值为父组件中的变量,变量对应的值为要挂载的组件组件名,然后根据父组件里某个变量来动态显示哪个,也可以都不...
  • 由于 pcHome 和 mvHome 里面都用到了 swiper 插件,所以用 v-if 老是...访问之后就出问题了,组件内的东西都显示不出来,用 vConsole 调试工具查看 html 结构,结构都有,就是不展示,这可急死我了,以前也没碰到这...
  • Vue组件动态获取父组件的值

    千次阅读 2019-10-18 11:55:16
    组件中子组件调用: <component :is="chartStyleComponent" :dimensionsItems="metadata.dimensions.length"> </component> 子组件定义: ...动态监控获取父组件改变后的值: wat...
  • vue踩坑系列——动态组件

    万次阅读 2017-05-19 11:20:20
    vue实现动态组件的两种方法 效果图: 右侧按钮是动态组件,分为按钮组件和箭头组件 一种是使用v-if条件渲染: 当seen=0的时候,使用按钮组件,否则使用箭头组件组件: {{tipsText}} //...
  • Vue动态加载组件的四种方式

    千次阅读 2020-02-06 18:01:03
    动态加载组件的四种方式: 1、使用import导入组件,可以获取到组件 var name = 'system'; var myComponent =() => import('../components/' + name + '.vue'); var route={ name:name, component:...
  • 使用vue动态组件达到切换效果

    千次阅读 2017-01-02 15:10:59
    html代码: js代码: 效果: js代码: 效果:
  • 单个vue组件的打包和动态引入

    千次阅读 2020-05-31 14:20:36
    编写组件和打包脚本3. 打包三、动态引入1. 在vue项目中使用2. 在普通项目中使用总结 一、原理简介 在使用webpack打包vue项目时,我们一般习惯以项目的main.js为打包入口,构建完整的项目依赖。依赖构建完毕后将打包...
  • Vue动态创建组件方法

    千次阅读 2018-10-29 16:47:00
    组件写好之后有的时候需要动态创建组件。...富文本编辑器也就是第三方的组件,需要绑定一个值就跟input一样,但是其他的和平常都是一样的,根据这个特点我们就可以使用Vue的for循环去动态创建例如 <div> ...
  • vue.js 动态组件缓存 keep-alive

    千次阅读 2018-10-09 00:25:56
    文章目录动态组件如图代码问题keep-alive代码UI 框架的 Tabs 组件(iView)例子 动态组件 在不同组件之间进行动态切换 比如:选项卡,点击不同的tab显示相应的组件。 注意:页面上只有当前选择的组件,而不是把...
  • 要完成这样一个转换,有几个技术要点需要解决,其中一个就是需要Vue动态加载组件,那么,Vue动态加载组件的常用方式有哪些呢? 2. Vue动态加载组件的两类方式 Vue加载组件主要有正常加载和懒加载,示例代码如下: //...
  • 当使用了keep-alive缓存动态组件以后,每次切换进入页面或者组件的时候会被缓存下来。如果进入一个页面后,使用mounted进行数据请求以后,会被缓存下来。在下一次进入页面,就不会再重新发起数据请求,直接从缓存中...
  • vue 循环加载动态组件以及传值

    千次阅读 2019-06-25 18:25:00
    今天遇到一个需求,某个页面是个动态页面,由多个子组件构成。  之前我们的做法是将N个需要的组件import进主页面,然后引用一下即可。但是现在遇到的问题是, 这个动态页面存在多个业务,有的业务需要某几个组件,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 359,489
精华内容 143,795
关键字:

vue动态组件

vue 订阅