小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
Vue 必备小知识之动态组件
Vue 的 2 个内置组件:
<component :is=”组件的名字”></component>
:is
指定要显示的组件名字<keep-alive></keep-alive>
对内容进行缓存
1. 动态组件
1.1 动态组件效果如下图:
1.2 实现代码:
<head>
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.5.6/vue.js"></script>
</head>
<body>
<div id="box">
<!-- keep-alive 对内容进行缓存 -->
<keep-alive>
<!-- component 动态组件 :is 指定 -->
<component :is="curComponentName"></component>
</keep-alive>
<button @click="curComponentName='com1'">组件一</button>
<button @click="curComponentName='com2'">组件二</button>
</div>
<script>
var com1 = {
template: "<div>com1 组件一 <input type='text'></div>"
}
var com2 = {
template: "<div>com2 组件二 <input type='text'></div>"
}
var vm = new Vue({
el: "#box",
data: {
curComponentName: 'com1'
},
components: {
com1,
com2
}
})
</script>
</body>
复制代码
2. 小实战: Tab 选项卡
也是用到的动态组件来实现的: <component :is="componentName">
选项卡 简单效果图,
功能已经写完整了, 可继续美化样式. 这里点击可切换界面 tab, 这里没做动图演示, 两个效果图由点击得来, 供大家臆想..~
<head>
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.5.6/vue.js"></script>
<style>
ul {
list-style: none;
margin: 0;
padding: 0;
}
.bt li {
float: left;
width: 80px;
text-align: center;
padding: 5px 10px;
}
.clear {
clear: both;
}
.content {
border: 1px solid #000;
}
.red {
color: red
}
</style>
</head>
<body>
<div id="box">
<tab :titles="['JavaScript', 'TypeScript', 'CSS']" :contents="['JavaScript 的内容', 'TypeScript 的内容', 'CSS 的内容']"></tab>
<tab :titles="['一教室内', '一教室内']" :contents="['一教室内有30人', '二教室内有20人']"></tab>
<tab :titles="['aaa', 'bbb']" :contents="['aaaaaaaaa', 'bbbbbbbb']"></tab>
</div>
<script></script>
</body>
复制代码
总结
这里用到了 Vue的内置组件<keep-alive>
/ <component :is='要显示的组件名'></component>