refactor(Center): 全面优化个人中心模块

- 目录重命名:Dashboard → Center(匹配路由 /home/center)
- 删除遗留代码:Default.js、InvestmentPlansAndReviews.js、InvestmentCalendarChakra.js(共 2596 行)
- 创建 src/types/center.ts 类型定义(15+ 接口)
- 性能优化:
  - 创建 useCenterColors Hook 封装 7 个 useColorModeValue
  - 创建 utils/formatters.ts 提取纯函数
  - 修复 loadRealtimeQuotes 的 useCallback 依赖项
  - InvestmentPlanningCenter 添加 useMemo 缓存
- TypeScript 迁移:Center.js → Center.tsx

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
zdl
2025-12-22 18:57:28 +08:00
parent c639b418f0
commit 18ba36a539
23 changed files with 658 additions and 2778 deletions

View File

@@ -0,0 +1,5 @@
/**
* Center 模块 Hooks 导出
*/
export { useCenterColors, default as useCenterColorsDefault } from './useCenterColors';

View File

@@ -0,0 +1,41 @@
/**
* useCenterColors Hook
*
* 封装 Center 模块的所有颜色变量,避免每次渲染重复调用 useColorModeValue
* 将 7 次 hook 调用合并为 1 次 useMemo 计算
*/
import { useMemo } from 'react';
import { useColorModeValue } from '@chakra-ui/react';
import type { CenterColors } from '@/types/center';
/**
* 获取 Center 模块的颜色配置
* 使用 useMemo 缓存结果,避免每次渲染重新计算
*/
export function useCenterColors(): CenterColors {
// 获取当前主题模式下的基础颜色
const textColor = useColorModeValue('gray.700', 'white');
const borderColor = useColorModeValue('gray.200', 'gray.600');
const bgColor = useColorModeValue('white', 'gray.800');
const hoverBg = useColorModeValue('gray.50', 'gray.700');
const secondaryText = useColorModeValue('gray.600', 'gray.400');
const cardBg = useColorModeValue('white', 'gray.800');
const sectionBg = useColorModeValue('gray.50', 'gray.900');
// 使用 useMemo 缓存颜色对象,只在颜色值变化时重新创建
return useMemo(
() => ({
textColor,
borderColor,
bgColor,
hoverBg,
secondaryText,
cardBg,
sectionBg,
}),
[textColor, borderColor, bgColor, hoverBg, secondaryText, cardBg, sectionBg]
);
}
export default useCenterColors;