فهرست منبع

Fix query board default tab after preview load

SamLee 1 هفته پیش
والد
کامیت
655f439684

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
app/frontend/dist/assets/index-Cgnj5h6U.js


+ 1 - 1
app/frontend/dist/index.html

@@ -4,7 +4,7 @@
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
     <title>创作知识</title>
-    <script type="module" crossorigin src="/app/assets/index-C5GnB287.js"></script>
+    <script type="module" crossorigin src="/app/assets/index-Cgnj5h6U.js"></script>
     <link rel="stylesheet" crossorigin href="/app/assets/index-DaHdrXy9.css">
   </head>
   <body>

+ 8 - 11
app/frontend/src/features/query-board/QueryBoardPage.jsx

@@ -1,4 +1,4 @@
-import { useEffect, useMemo, useState } from 'react'
+import { useEffect, useMemo, useRef, useState } from 'react'
 import ErrorState from '../../components/ErrorState.jsx'
 import LoadingState from '../../components/LoadingState.jsx'
 import DecodeKnowledgeModal from '../decode/DecodeKnowledgeModal.jsx'
@@ -53,6 +53,7 @@ export default function QueryBoardPage() {
   const [selectedQuery, setSelectedQuery] = useState(null)
   const [decodeItemId, setDecodeItemId] = useState('')
   const [manualMode, setManualMode] = useState('')
+  const didSetDefaultTab = useRef(false)
 
   const families = useMemo(() => {
     const base = preview?.families || []
@@ -72,22 +73,18 @@ export default function QueryBoardPage() {
   }, [lastUpdatedAt])
 
   useEffect(() => {
-    const resetDefaultTab = () => {
-      if ((window.location.hash || '#/') === '#/') {
-        setActiveKey('f1')
-      }
+    if (!didSetDefaultTab.current && (window.location.hash || '#/') === '#/' && families.some((row) => row.key === 'f1')) {
+      didSetDefaultTab.current = true
+      setActiveKey('f1')
     }
-    resetDefaultTab()
-    window.addEventListener('pageshow', resetDefaultTab)
-    return () => window.removeEventListener('pageshow', resetDefaultTab)
-  }, [])
+  }, [families])
 
   useEffect(() => {
     const firstKey = families[0]?.key
-    if (firstKey && !families.some((row) => row.key === activeKey)) {
+    if (firstKey && !families.some((row) => row.key === activeKey) && preview) {
       setActiveKey(firstKey)
     }
-  }, [families, activeKey])
+  }, [families, activeKey, preview])
 
   useEffect(() => {
     if (!familyItems.length) {

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است