/* * @Author: fxs bjnsfxs@163.com * @Date: 2024-09-10 10:31:42 * @LastEditors: fxs bjnsfxs@163.com * @LastEditTime: 2024-09-11 16:28:26 * @FilePath: \Game-Backstage-Management-System\src\hooks\usePage.ts * @Description: * */ import { onActivated, onDeactivated, watch } from 'vue' import { compareWatchData, saveWatchData } from '@/utils/common' export function usePage() { const watchPageChange = ( watchData: () => Array, bakcupData: any, cb: (...argus: any[]) => void ) => { let watchStop: (() => void) | null = null onActivated(() => { const currentData = watchData() if (!compareWatchData(bakcupData, currentData)) { cb(...currentData) } if (!watchStop) { watchStop = watch( () => watchData(), (newData) => { cb(...newData) }, { deep: true } ) } }) onDeactivated(() => { if (watchStop) { const currentData = watchData() saveWatchData(currentData, bakcupData) watchStop() watchStop = null } }) } return { watchPageChange } }