12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- import { computed, ref, unref } from 'vue';
- import { useRootSetting } from '/@/hooks/setting/useRootSetting';
- import { tryTsxEmit } from '/@/utils/helper/vueHelper';
- import { tabStore, PAGE_LAYOUT_KEY } from '/@/store/modules/tab';
- import { useRouter } from 'vue-router';
- const ParentLayoutName = 'ParentLayout';
- export function useCache(isPage: boolean) {
- const name = ref('');
- const { currentRoute } = useRouter();
- tryTsxEmit((instance) => {
- const routeName = instance.type.name;
- if (routeName && ![ParentLayoutName].includes(routeName)) {
- name.value = routeName;
- } else {
- const matched = currentRoute.value.matched;
- const len = matched.length;
- if (len < 2) return;
- name.value = matched[len - 2].name as string;
- }
- });
- const { getOpenKeepAlive } = useRootSetting();
- const getCaches = computed((): string[] => {
- if (!unref(getOpenKeepAlive)) {
- return [];
- }
- const cached = tabStore.getCachedMapState;
- if (isPage) {
- // page Layout
- return cached.get(PAGE_LAYOUT_KEY) || [];
- }
- const cacheSet = new Set<string>();
- cacheSet.add(unref(name));
- const list = cached.get(unref(name));
- if (!list) {
- return Array.from(cacheSet);
- }
- list.forEach((item) => {
- cacheSet.add(item);
- });
- return Array.from(cacheSet);
- });
- return { getCaches };
- }
|