vue---动态组件component与组件缓存keep-alive
1、component使用component渲染一个“元组件”为动态组件,通过is来决定哪个组件被渲染(1)【is="组件名"】(2)【:is="变量名"】2、keep-alivekeep-alive能在组件切换过程中将状态保留在内存中,防止重复渲染DOM。可以用于系统中的多标签页面缓存打开的页面...
·
1、component
使用component渲染一个“元组件”为动态组件,
通过 Vue 的 <component> 元素加一个特殊的 is attribute 来实现动态组件,通过is来决定哪个组件被渲染。
动态组件帮助我们更大程度地去复用我们的js代码,而不是将业务逻辑放在模板中
(1)【is="组件名"】 (2)【:is="变量名"】
(3)结合computed属性使用
2、keep-alive
keep-alive能在组件切换过程中将状态保留在内存中,防止重复渲染DOM。可以用于系统中的多标签页面缓存打开的页面数据,避免多次请求页面数据。
使用keep-alive来保存keep-alive一个直属的子组件的virtual Dom数据,在后面再加载组件的时候,由这个virtual Dom去生成新的Dom。缓存virtaul DOM,而不是DOM
<keep-alive>
包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。和<transition>
相似,<keep-alive>
是一个抽象组件:它自身不会渲染一个 DOM 元素,也不会出现在父组件链中。
例子:
【App.vue】
<template>
<div id="app">
<!-- <component is="pagetwo"></component> -->
<keep-alive>
<component :is="component"></component>
</keep-alive>
<button @click="component = 'pageone'">show pageOne</button>
<button @click="component = 'pagetwo'">show pageTwo</button>
</div>
</template>
<script>
import pageOne from "./components/pageOne";
import pageTwo from "./components/pageTwo";
export default {
name: "App",
data() {
return {
component: "pageone"
};
},
components: {
pageone: pageOne,
pagetwo: pageTwo
}
};
</script>
<style>
button {
margin-top: 20px;
}
</style>
【pageOne.vue】/【pageTwo.vue】
<template>
<div class="page-one">
<h1>pageOne</h1>
<div class="username">
姓名:
<input type="text" />
</div>
<div class="age">
年龄:
<input type="text" />
</div>
</div>
</template>
<script>
export default {
name: "page-one",
data() {
return {
msg: "Welcome to Your Vue.js App"
};
}
};
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
.page-one {
height: 200px;
width: 600px;
background-color: rgb(218, 196, 169);
}
.username {
margin-bottom: 20px;
}
.age {
margin-bottom: 20px;
}
</style>
更多推荐
已为社区贡献45条内容
所有评论(0)