From 67ca3ce81da153398a0c6b99e7aa83a9390a6cbd Mon Sep 17 00:00:00 2001 From: hzm <934585316@qq.com> Date: Fri, 27 Feb 2026 21:01:09 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E9=A6=96=E9=A1=B5?= =?UTF-8?q?=E6=80=A7=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/components/RefreshButton.jsx | 40 ++++++++++++++++++++++++++++++++ app/page.jsx | 39 +++++++------------------------ 2 files changed, 49 insertions(+), 30 deletions(-) create mode 100644 app/components/RefreshButton.jsx diff --git a/app/components/RefreshButton.jsx b/app/components/RefreshButton.jsx new file mode 100644 index 0000000..c21761a --- /dev/null +++ b/app/components/RefreshButton.jsx @@ -0,0 +1,40 @@ +'use client'; + +import { useEffect, useState } from "react"; +import { RefreshIcon } from './Icons'; + +export default function RefreshButton({ refreshCycleStartRef, refreshMs, manualRefresh, refreshing, fundsLength }) { + + // 刷新周期进度 0~1,用于环形进度条 + const [refreshProgress, setRefreshProgress] = useState(0); + + // 刷新进度条:每 100ms 更新一次进度 + useEffect(() => { + if (fundsLength === 0 || refreshMs <= 0) return; + const t = setInterval(() => { + const elapsed = Date.now() - refreshCycleStartRef.current; + const p = Math.min(1, elapsed / refreshMs); + setRefreshProgress(p); + }, 100); + return () => clearInterval(t); + }, [fundsLength, refreshMs]); + + return ( +
+ +
+ ); +} diff --git a/app/page.jsx b/app/page.jsx index 9b39c23..2022c1f 100644 --- a/app/page.jsx +++ b/app/page.jsx @@ -36,6 +36,7 @@ import TradeModal from "./components/TradeModal"; import TransactionHistoryModal from "./components/TransactionHistoryModal"; import AddHistoryModal from "./components/AddHistoryModal"; import UpdatePromptModal from "./components/UpdatePromptModal"; +import RefreshButton from "./components/RefreshButton"; import WeChatModal from "./components/WeChatModal"; import DcaModal from "./components/DcaModal"; import githubImg from "./assets/github.svg"; @@ -311,8 +312,6 @@ export default function HomePage() { // 全局刷新状态 const [refreshing, setRefreshing] = useState(false); - // 刷新周期进度 0~1,用于环形进度条 - const [refreshProgress, setRefreshProgress] = useState(0); // 收起/展开状态 const [collapsedCodes, setCollapsedCodes] = useState(new Set()); @@ -2134,17 +2133,6 @@ export default function HomePage() { }; }, [funds, refreshMs]); - // 刷新进度条:每 100ms 更新一次进度 - useEffect(() => { - if (funds.length === 0 || refreshMs <= 0) return; - const t = setInterval(() => { - const elapsed = Date.now() - refreshCycleStartRef.current; - const p = Math.min(1, elapsed / refreshMs); - setRefreshProgress(p); - }, 100); - return () => clearInterval(t); - }, [funds.length, refreshMs]); - const performSearch = async (val) => { if (!val.trim()) { setSearchResults([]); @@ -3447,22 +3435,13 @@ export default function HomePage() { )} -
- -
+ {/* { const showIntraday = Array.isArray(valuationSeries[f.code]) && valuationSeries[f.code].length >= 2; if (!showIntraday) return null; - + // 如果今日日期大于估值日期,说明是历史估值,不显示分时图 if (f.gztime && toTz(todayStr).startOf('day').isAfter(toTz(f.gztime).startOf('day'))) { return null;