Commit e7e90b1d authored by 375242562@qq.com's avatar 375242562@qq.com

fix: DataSyncPage 修复 loadData TDZ 错误 — 将轮询 useEffect 移至 useCallback 定义之后

将引用 loadData 的轮询 useEffect 从 useCallback 定义之前移至之后,
消除 JavaScript 暂时死区(TDZ)导致的 ReferenceError。
Co-Authored-By: default avatarClaude Sonnet 4.6 <noreply@anthropic.com>
parent 269c9325
...@@ -873,14 +873,6 @@ export function DataSyncPage() { ...@@ -873,14 +873,6 @@ export function DataSyncPage() {
const [batches, setBatches] = useState<SyncBatch[]>([]) const [batches, setBatches] = useState<SyncBatch[]>([])
const [deletingBatch, setDeletingBatch] = useState<string | null>(null) const [deletingBatch, setDeletingBatch] = useState<string | null>(null)
// 轮询:当有任务正在运行时,每3秒刷新一次任务列表
useEffect(() => {
const hasRunning = sources.some(s => s.is_running)
if (!hasRunning) return
const timer = setInterval(() => { loadData() }, 3000)
return () => clearInterval(timer)
}, [sources, loadData])
// 加载数据 // 加载数据
const loadData = useCallback(async () => { const loadData = useCallback(async () => {
try { try {
...@@ -901,6 +893,14 @@ export function DataSyncPage() { ...@@ -901,6 +893,14 @@ export function DataSyncPage() {
useEffect(() => { loadData() }, [loadData]) useEffect(() => { loadData() }, [loadData])
// 轮询:当有任务正在运行时,每3秒刷新一次任务列表
useEffect(() => {
const hasRunning = sources.some(s => s.is_running)
if (!hasRunning) return
const timer = setInterval(() => { loadData() }, 3000)
return () => clearInterval(timer)
}, [sources, loadData])
// 执行同步 // 执行同步
const handleRunSync = async (source: SyncSource) => { const handleRunSync = async (source: SyncSource) => {
setSyncing(s => ({ ...s, [source.id]: true })) setSyncing(s => ({ ...s, [source.id]: true }))
......
...@@ -8,6 +8,7 @@ export default defineConfig({ ...@@ -8,6 +8,7 @@ export default defineConfig({
alias: { '@': path.resolve(__dirname, './src') }, alias: { '@': path.resolve(__dirname, './src') },
}, },
server: { server: {
host: '0.0.0.0',
port: 5173, port: 5173,
proxy: { proxy: {
'/api': { target: 'http://localhost:8000', changeOrigin: true }, '/api': { target: 'http://localhost:8000', changeOrigin: true },
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment