使用<component :is="组件名"></component>
结合Element-UI的导航菜单 :
UI组件
el-menu-item里的index写对应的组件名
点击事件@select="handleSelect"
1
2
3
4
5
|
<el-menu : default -active= "activeIndex" class= "el-menu-demo" mode= "horizontal" @select= "handleSelect" >
<el-menu-item index= "Home" >首页</el-menu-item>
<el-menu-item index= "About" >关于我们</el-menu-item>
</el-menu>
<component :is= "activeIndex" ></component>
|
在点击事件里动态设置组件名
1
2
3
|
handleSelect(index) {
this .activeIndex = index
}
|
完整代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
<template>
<div id= "app" >
<!-- 导航栏 -->
<el-row class= "home_nav" type= "flex" justify= "flex-start" align= "middle" >
<el-col :span= "2" :offset= "4" >
<div>LOGO</div>
</el-col>
<el-col :span= "12" >
<el-menu : default -active= "activeIndex" class= "el-menu-demo" mode= "horizontal" @select= "handleSelect" >
<el-menu-item index= "Home" >首页</el-menu-item>
<el-menu-item index= "About" >关于我们</el-menu-item>
</el-menu>
</el-col>
</el-row>
<component :is= "activeIndex" ></component>
</div>
</template>
<script>
import Home from './components/Home.vue'
import About from './components/About.vue'
export default {
name: 'app' ,
components: {
Home,
About
},
data(){
return {
activeIndex: "Home"
}
},
methods: {
handleSelect(index) {
this .activeIndex = index
}
}
}
</script>
<style>
</style>
|
补充知识:vue 动态组件(tabs切换)keep-alive:主要用于保留组件状态或避免重新渲染
通过keep-alive 保留数据值 填写数据时切换到其他页面,后返回当前页数据保留 ,主要用于保留组件状态或避免重新渲染
1
2
3
4
5
6
7
8
9
10
11
|
<!--动态组件-component使用-->
< div class = "app" >
< ul >
< li @ click = "currView='home'" >首页</ li >
< li @ click = "currView='abount'" >关于我们</ li >
</ ul >
<!--通过keep-alive 保留数据值 填写数据时切换到其他页面,后返回当前页数据保留-->
< keep-alive >
< component :is = "currView" ></ component >
</ keep-alive >
</ div >
|
1
2
3
4
5
6
|
<script type= "text/x-Template" id= "homeTemp" >
<h2>首页数据</h2>
</script>
<script type= "text/x-Template" id= "abountTemp" >
<h2>关于我们数据<input type= "text" /></h2>
</script>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<script type= "text/javascript" >
var vm= new Vue({
el: '.app' ,
data:{
currView: "home"
},
components:{
"home" :{
template: "#homeTemp"
},
"abount" :{
template: "#abountTemp"
}
}
});
</script>
|
以上这篇Vue切换Tab动态渲染组件的操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/denghuocc/article/details/99577894