12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- /*
- * @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<any>,
- 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
- }
- }
|