1、动态组件: 在页面的某个地方进行不同的动态切换,渲染出不同的效果,除了用条件渲染,还可以用动态组件。
<!--父组件部分-->
<template>
<div>
<button @click="toggleComponent">Toggle Component</button>
<component :is="initComponent" @click="toggleComponent"></component>
</div>
</template>
<script>
import ComponentA from './ComponentA.vue';
import ComponentB from './ComponentB.vue';
export default {
data() {
return {
initComponent: 'ComponentA',
};
},
methods: {
toggleComponent(obj) {
this.initComponent = obj.initComponent;//切换组件
},
},
components: {
ComponentA,
ComponentB,
},
};
</script>
2、缓存组件:与动态组件(component)一起使用,keep-alive嵌套着component。当包裹的组件(component)被切换隐藏时,并不会将组件销毁,而是将其缓存起来,下次再次使用时会从缓存中取出复用的过程
<template>
<div>
<button @click="toggleComponent">Toggle Component</button>
<keep-alive>
<component :is="initComponent"></component>
</keep-alive>
</div>
</template>
<script>
import ComponentA from './ComponentA.vue';
import ComponentB from './ComponentB.vue';
export default {
data() {
return {
initComponent: 'ComponentA',
};
},
methods: {
toggleComponent() {
this.initComponent = this.initComponent === 'ComponentA' ? 'ComponentB' : 'ComponentA';
},
},
components: {
ComponentA,
ComponentB,
},
};
</script>
3、异步组件: 其实就是懒加载组件,按需加载组件,异步组件通过使用 import()
函数来定义组件的导入。当使用异步组件时,组件将在需要时进行懒加载,而不是在初始渲染时立即加载。
<template>
<div>
<button @click="loadComponent">Load Component</button>
<component v-if="isComponentLoaded" :is="initComponent"></component>
</div>
</template>
<script>
export default {
data() {
return {
isComponentLoaded: false,
initComponent: null,
};
},
methods: {
loadComponent() {
import('./ComponentA.vue').then((module) => {
this.initomponent = module.default;
this.isComponentLoaded = true;
});
},
},
};
</script>
另外,还有条件渲染等可按需展示相应的页面
1、条件渲染 (v-if
): 条件渲染是根据指定条件来决定是否渲染某个元素或组件。可以使用 v-if
指令将一个元素或组件包裹在一个包含条件的表达式中。
<template>
<div>
<p v-if="isShow">This paragraph is rendered conditionally.</p>
</div>
</template>
<script>
export default {
data() {
return {
isShow: true,
};
},
};
</script>
2、循环渲染 (v-for
): 循环渲染是用于在模板中循环渲染数组或对象的内容。可以使用 v-for
指令将一个元素或组件重复渲染多次,每次使用不同的数据。
<template>
<div>
<ul>
<li v-for="item in items" :key="item.id">{{ item.name }}</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
items: [
{ id: 1, name: 'Item 1' },
{ id: 2, name: 'Item 2' },
{ id: 3, name: 'Item 3' },
],
};
},
};
</script>
3、条件渲染 (v-show
): 根据指定条件来决定元素或组件是否显示,但与v-if渲染不同的是, v-show
指令来控制元素的显示和隐藏。
<template>
<div>
<p v-show="isVisible">This paragraph is shown or hidden based on the value of `isVisible`.</p>
</div>
</template>
<script>
export default {
data() {
return {
isVisible: true,
};
},
};
</script>
总结,以上方法都可根据用户需求展示不同页面,在提升性能的前提下实现不同页面的渲染效果。