问题:当多次调用同一个接口实现渲染时,会重复发送请求。
解决:使用 Pinia 进行数据集中管理,再把数据下发给组件,以供使用。
(Pinia可以跨组件/页面共享状态。)
- /* 定义Store */
- import { defineStore } from 'pinia'
-
- export const useStore = defineStore('name',()=>{
- // 第一个参数是store的唯一标识/id
- // 定义数据 state、方法 action
- ...
- // 以对象的形式返回
- return {
- ...
- }
- })
如
以下是在vue3中使用setup语法糖,导入store,在调用,钩子挂起
- import { useXXXStore } from '@/stores/categoryStore'
- import { onMounted } from 'vue'
-
- const categoryStore = useXXXStore() // 调用store
- onMounted(() => categoryStore.getCategory()) // vue3中 生命周期钩子,用于组件挂载到DOM之后执行的操作
官方文档: Home | Pinia 中文文档 (web3doc.top)
参考:vue2的Mounted和vue3的onMounted,这两个钩子有何不同?_onmounted和mounted_小猫娃来啦的博客-CSDN博客