vue动态组件动态引入

2021-02-05  本文已影响0人  狗蛋儿妈妈爱coding
1、先来看一段常规的组件引入和使用:

1、可copy的代码展示

// 这是引入部分
import inputC from './inputC'
export default {
  components:{
    inputC,
  },
 data () {
    return {
      val: {},
     }
 }
}
<template>
  <div class="field">
    <div class="inner">

      <!--这是使用部分-->
      <inputC  :params="val"></inputC>

    </div>
    <div class="bottom">
      <el-button type="primary" @click="update">编辑</el-button>
      <el-button type="primary" @click="submit">提交</el-button>
      <el-button type="primary" @click="search">查询</el-button>
      <el-button type="primary" @click="search2">查询2</el-button>
    </div>
  </div>
</template>

2、不可copy的代码截图解释:


image.png
2、接下来为动态组件、动态引入:

1、上面所展示的是最基本的操作,组件名、组件个数、组件路径确定,可按照常规步骤引入、使用。
2、下面展示当不确定组件名、组件个数、组件路径 时, 如何引入组件、如何使用组件?
3、以下为可copy的代码展示:

<template>
  <div class="field list">
  
      <component :params="childParams" :is="NextTickName"></component>

  </div>
</template>
/*
*定义一个基于window对象的全局属性:componentsConfig
*此处的代码你可以放在任意你觉得方便的地方即可,放在别的js文件也可,此处为了方便就放
*这里
*/
window.componentsConfig = {    //左边是key值,右边是组件的引入路径
     'test1': './test1.vue',
     'test2': './test2.vue',
     'test3': './test3.vue',
     'test4': './test4.vue',
}

// 因为不知道组件名以及路径,那么此处无法使用import语句
//import inputC from './inputC'
export default {
  components:{
   // inputC,             //因为无法import组件,所以组件列表这里也无法配上组件名
  },
 data () {
    return {
      childParams: {},
     }
  },
computed:{
    NextTickName: function (){
      let map = window.componentsConfig;
      if(this.targetComponent){
        let k = this.targetComponent;       // 组件映射关系key值
        let p = map[k];        // 通知k值读取到路径信息
        let c = () => import(`${p}`);          // 动态组件
    
        return c
      }
    }
  },
}


4、以下为不可copy的代码截图解释:


image.png
上一篇下一篇

猜你喜欢

热点阅读