diff --git a/mock/role/index.ts b/mock/role/index.ts index 9cd02711f..5ecd679a4 100644 --- a/mock/role/index.ts +++ b/mock/role/index.ts @@ -369,6 +369,14 @@ const adminList = [ meta: { title: 'useClipboard' } + }, + { + path: 'useNetwork', + component: 'views/hooks/useNetwork', + name: 'UseNetwork', + meta: { + title: 'useNetwork' + } } ] }, @@ -635,6 +643,7 @@ const testList: string[] = [ '/hooks/useValidator', '/hooks/useCrudSchemas', '/hooks/useClipboard', + '/hooks/useNetwork', '/level', '/level/menu1', '/level/menu1/menu1-1', diff --git a/src/hooks/web/useNetwork.ts b/src/hooks/web/useNetwork.ts new file mode 100644 index 000000000..66fa44642 --- /dev/null +++ b/src/hooks/web/useNetwork.ts @@ -0,0 +1,21 @@ +import { ref, onBeforeUnmount } from 'vue' + +const useNetwork = () => { + const online = ref(true) + + const updateNetwork = () => { + online.value = navigator.onLine + } + + window.addEventListener('online', updateNetwork) + window.addEventListener('offline', updateNetwork) + + onBeforeUnmount(() => { + window.removeEventListener('online', updateNetwork) + window.removeEventListener('offline', updateNetwork) + }) + + return { online } +} + +export { useNetwork } diff --git a/src/router/index.ts b/src/router/index.ts index 27dec3b3a..15798eff8 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -411,6 +411,14 @@ export const asyncRouterMap: AppRouteRecordRaw[] = [ meta: { title: 'useClipboard' } + }, + { + path: 'useNetwork', + component: () => import('@/views/hooks/useNetwork.vue'), + name: 'UseNetwork', + meta: { + title: 'useNetwork' + } } ] }, diff --git a/src/views/hooks/useNetwork.vue b/src/views/hooks/useNetwork.vue new file mode 100644 index 000000000..dd6ed934e --- /dev/null +++ b/src/views/hooks/useNetwork.vue @@ -0,0 +1,12 @@ + + +