vue基础 动态组件 实现相互切换并缓存数据
动态组件
准备工作
组件1:Acomponent
内容部分:
<template>
<div>{{msg}}</div>
</template>
<script>
export default {
name:"Dynamic",
data() {
return {
msg:"welcome 组件A!"
}
},
}
</script>
组件2:Bcomponent
内容部分:
<template>
<div>{{msg}}
<button @click="ChangeContent">修改b的内容</button>
</div>
</template>
<script>
// import func from 'vue-editor-bridge'
export default {
name:"Dynamic",
data() {
return {
msg:"welcome 组件B!"
}
},
methods:{
ChangeContent:function(){
this.msg="被修改后的数据"
}
}
}
</script>
组件相互切换,
子组件引用AComponent、BComponent
<template>
<div>
动态组件:
<button @click="Adyc">A组件</button>
<button @click="Bdyc">B组件</button>
<!-- 组件相互切换并实现修改后缓存 -->
<keep-alive>
<component v-bind:is="currentTabComponent"></component>
</keep-alive>
<!-- 组件相互切换,但不会缓存数据 -->
<!-- <component v-bind:is="currentTabComponent"></component> -->
</div>
</template>
<script>
import Adynamic from "./AComponent"
import Bdynamic from "./BComponent"
export default {
name:"Dynamic",
data() {
return {
msg:"welcome DynamicDemo!",
currentTabComponent:AComponent
}
},
components:{
Acomponent,
Bcomponent
},
methods:{
Adyc:function(){
this.currentTabComponent=AComponent
},
Bdyc:function(){
this.currentTabComponent=BComponent
}
}
}
</script>
父组件:
<template>
<div>
<MyComponent/>
</div>
</template>
<script>
import HelloWorld from './components/HelloWorld'
import Dynamic from './components/MyComponent.vue'
export default {
name: 'App',
components: {
HelloWorld,
MyComponent
}
}
</script>
<style>
#app {
font-family: 'Avenir', Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
</style>

浙公网安备 33010602011771号