创建一个Vue 3组件,使用<keepAlive>实现组件缓存。包含两个按钮,一个用于显示组件A,A里面是一个输入框input,一个用于显示组件B,B里面也是一个输入框input,使用<KeepAlive>缓存组件A,当A中的输入框内容之后,使用组件A的状态不会因为切换而丢失
时间: 2024-11-25 09:14:15 浏览: 9
使用Vue组件实现一个简单弹窗效果
在Vue 3中,我们可以创建一个简单的组件,利用`v-if`和`<keep-alive>`来实现组件A的缓存。首先,安装Vue CLI并初始化一个新的项目。然后,在你的组件文件(例如`components/MyComponent.vue`)中,可以按照以下步骤编写代码:
```html
<template>
<div>
<button @click="showComponentA">显示 Component A</button>
<button @click="showComponentB">显示 Component B</button>
<keep-alive>
<component :is="currentComponent" v-if="currentComponent">
<!-- 这里需要分别定义 Component A 和 B -->
<component-a></component-a>
<!-- 或者 -->
<component-b></component-b>
</component>
</keep-alive>
</div>
</template>
<script>
import ComponentA from './ComponentA.vue';
import ComponentB from './ComponentB.vue';
export default {
name: 'MyComponent',
data() {
return {
currentComponent: 'ComponentA', // 初始加载 ComponentA
};
},
methods: {
showComponentA() {
this.currentComponent = 'ComponentA'; // 当点击时切换到 ComponentA
},
showComponentB() {
this.currentComponent = 'ComponentB'; // 当点击时切换到 ComponentB
},
},
};
</script>
<!-- 在这里分别创建 ComponentA 和 ComponentB 文件 -->
<!-- 比如 ComponentA.vue -->
<template>
<div>
<input type="text" v-model="inputValue" />
</div>
</template>
<script>
export default {
data() {
return { inputValue: '' };
},
};
</script>
<!-- 类似地创建 ComponentB.vue -->
注意:为了保持状态,你需要在`ComponentA`或`ComponentB`内部使用`v-model`绑定输入框的值,并确保每个组件都有相应的数据响应式。
阅读全文