瀏覽代碼

perf: useNetwork

kailong321200875 1 年之前
父節點
當前提交
88be3eea10
共有 4 個文件被更改,包括 50 次插入0 次删除
  1. 9 0
      mock/role/index.ts
  2. 21 0
      src/hooks/web/useNetwork.ts
  3. 8 0
      src/router/index.ts
  4. 12 0
      src/views/hooks/useNetwork.vue

+ 9 - 0
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',

+ 21 - 0
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 }

+ 8 - 0
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'
+        }
       }
     ]
   },

+ 12 - 0
src/views/hooks/useNetwork.vue

@@ -0,0 +1,12 @@
+<script setup lang="ts">
+import { ContentWrap } from '@/components/ContentWrap'
+import { useNetwork } from '@/hooks/web/useNetwork'
+
+const { online } = useNetwork()
+</script>
+
+<template>
+  <ContentWrap title="useNetwork">
+    当前网络状态: <code>{{ online ? '已连接' : '已断开' }}</code>
+  </ContentWrap>
+</template>