1.概要
在VUE开发中,我们有时候需要动态取加载组件来实现。下面使用一个例子来说明如何使用动态组件。
2.实现步骤
2.1 准备两个组件
为了说明问题,我们尽量做简单的实现。
编写Demo1.vue 代码如下:
<template>
<div>demo1 {{params.name}}</div>
</template>
<script>
export default {
name: "rx-demo1",
props:{
params:{
type:Object
}
}
}
</script>
编写Demo2.vue
<template>
<div>demo2 {{params.name}}</div>
</template>
<script>
export default {
name: "rx-demo2",
props:{
params:{
type:Object
}
}
}
</script>
2.2 实现动态组件加载
<template>
<div>
<a-button @click="demo1">demo1</a-button>
<a-button @click="demo2">demo2</a-button>
<component :is="component" :params="params" ></component>
</div>
</template>
<script>
export default {
name: "DynamicDemo",
data(){
return {
component:"",
params:"",
}
},
methods:{
demo1(){
var demo1=this.loadView("modules/demo/Demo1.vue");
this.component=demo1;
this.params={name:"老张"};
},
demo2(){
var demo2=this.loadView("modules/demo/Demo2.vue");
//var demo2=require("./Demo2.vue").default;
this.component=demo2;
this.params={name:"老王"};
},
loadView (view) { // 路由懒加载
return () => import(`@/views/${view}`)
}
}
}
</script>
加载组件有三种方法:
方法1:var demo2=this.loadView("modules/demo/Demo2.vue");
方法2var demo2=require("./Demo2.vue").default;
点击按钮时,就实现了组件的动态加载。
方法3:
<template>
<div>
<a-button @click="demo1">demo1</a-button>
<a-button @click="demo2">demo2</a-button>
<component :is="component" :params="params" ></component>
</div>
</template>
<script>
import Demo1 from "./Demo1";
import Demo2 from "./Demo2";
export default {
name: "DynamicDemo",
components:{
"rx-demo1":Demo1,
"rx-demo2":Demo2
},
data(){
return {
component:"",
params:"",
}
},
methods:{
demo1(){
this.component="rx-demo1";
this.params={name:"老张"};
},
demo2(){
this.component="rx-demo2";
this.params={name:"老王"};
}
}
}
</script>
先加载组件,在使用组件名称进行切换。
文档更新时间: 2022-03-27 16:09 作者:zyg