vue3项目,切换路由的时候不在重复调用接口
时间: 2023-06-24 17:04:40 浏览: 201
在 Vue3 中,你可以使用 `keep-alive` 组件来缓存组件实例,以避免每次路由切换时重复调用接口。当组件被缓存后,它将不再被销毁,而是被缓存起来,以便在下一次需要它时可以快速地重新渲染。
具体实现步骤如下:
1. 在需要缓存的组件外层包裹一个 `keep-alive` 组件,如下所示:
```html
<keep-alive>
<router-view />
</keep-alive>
```
2. 在需要缓存的组件中,使用 `activated` 和 `deactivated` 钩子函数来处理组件激活和失活时的逻辑。
```javascript
export default {
data() {
return {
data: null
}
},
async created() {
this.loadData()
},
activated() {
if (!this.data) {
this.loadData()
}
},
deactivated() {
// 清空数据
this.data = null
},
methods: {
async loadData() {
const data = await fetchData()
this.data = data
}
}
}
```
在这个例子中,当组件被激活时(即从缓存中重新渲染时),如果数据已经存在,则不再调用接口,否则重新加载数据。当组件失活时,则清空数据,以便在下一次激活时重新加载。
使用 `keep-alive` 组件缓存组件可以有效地减少接口请求次数,提高应用性能。
阅读全文