diff --git a/src/components/StockChart/KLineChartModal.tsx b/src/components/StockChart/KLineChartModal.tsx index 6eb35d47..5d416cf9 100644 --- a/src/components/StockChart/KLineChartModal.tsx +++ b/src/components/StockChart/KLineChartModal.tsx @@ -131,13 +131,18 @@ const KLineChartModal: React.FC = ({ chartInstance.current?.resize(); }; window.addEventListener('resize', handleResize); + + return () => { + window.removeEventListener('resize', handleResize); + }; }, 100); // 延迟100ms等待Modal完全打开 return () => { clearTimeout(timer); - window.removeEventListener('resize', () => {}); - chartInstance.current?.dispose(); - chartInstance.current = null; + if (chartInstance.current) { + chartInstance.current.dispose(); + chartInstance.current = null; + } }; }, [isOpen]); diff --git a/src/components/StockChart/TimelineChartModal.tsx b/src/components/StockChart/TimelineChartModal.tsx index 8d9698b3..3cb775d8 100644 --- a/src/components/StockChart/TimelineChartModal.tsx +++ b/src/components/StockChart/TimelineChartModal.tsx @@ -130,13 +130,18 @@ const TimelineChartModal: React.FC = ({ chartInstance.current?.resize(); }; window.addEventListener('resize', handleResize); + + return () => { + window.removeEventListener('resize', handleResize); + }; }, 100); // 延迟100ms等待Modal完全打开 return () => { clearTimeout(timer); - window.removeEventListener('resize', () => {}); - chartInstance.current?.dispose(); - chartInstance.current = null; + if (chartInstance.current) { + chartInstance.current.dispose(); + chartInstance.current = null; + } }; }, [isOpen]); diff --git a/src/views/Community/components/DynamicNewsDetail/StockListItem.js b/src/views/Community/components/DynamicNewsDetail/StockListItem.js index c6de6078..f9f2a1b3 100644 --- a/src/views/Community/components/DynamicNewsDetail/StockListItem.js +++ b/src/views/Community/components/DynamicNewsDetail/StockListItem.js @@ -4,15 +4,11 @@ import React, { useState } from 'react'; import { Box, - Flex, VStack, HStack, Text, - Button, IconButton, - Collapse, Tooltip, - Badge, useColorModeValue, } from '@chakra-ui/react'; import { StarIcon } from '@chakra-ui/icons'; @@ -20,7 +16,6 @@ import MiniTimelineChart from '../StockDetailPanel/components/MiniTimelineChart' import MiniKLineChart from './MiniKLineChart'; import TimelineChartModal from '../../../../components/StockChart/TimelineChartModal'; import KLineChartModal from '../../../../components/StockChart/KLineChartModal'; -import CitedContent from '../../../../components/Citation/CitedContent'; import { getChangeColor } from '../../../../utils/colorUtils'; import { PROFESSIONAL_COLORS } from '../../../../constants/professionalTheme'; @@ -48,10 +43,7 @@ const StockListItem = ({ const borderColor = PROFESSIONAL_COLORS.border.default; const codeColor = '#3B82F6'; const nameColor = PROFESSIONAL_COLORS.text.primary; - const descColor = PROFESSIONAL_COLORS.text.secondary; - const dividerColor = PROFESSIONAL_COLORS.border.default; - const [isDescExpanded, setIsDescExpanded] = useState(false); const [isTimelineModalOpen, setIsTimelineModalOpen] = useState(false); const [isKLineModalOpen, setIsKLineModalOpen] = useState(false); @@ -72,34 +64,9 @@ const StockListItem = ({ return `${prefix}${parseFloat(value).toFixed(2)}%`; }; - // 使用工具函数获取涨跌幅颜色(已从 colorUtils 导入) - // 获取涨跌幅数据(优先使用 quote,fallback 到 stock) const change = quote?.change ?? stock.daily_change ?? null; - // 处理关联描述 - const getRelationDesc = () => { - const relationDesc = stock.relation_desc; - - if (!relationDesc) return '--'; - - if (typeof relationDesc === 'string') { - return relationDesc; - } else if (typeof relationDesc === 'object' && relationDesc.data && Array.isArray(relationDesc.data)) { - // 新格式:{data: [{query_part: "...", sentences: "..."}]} - return relationDesc.data - .map(item => item.query_part || item.sentences || '') - .filter(s => s) - .join(';') || '--'; - } - - return '--'; - }; - - const relationText = getRelationDesc(); - const maxLength = 50; // 收缩时显示的最大字符数 - const needTruncate = relationText && relationText !== '--' && relationText.length > maxLength; - return ( <> - {/* 关联描述 - 升级和降级处理 */} - {stock.relation_desc && ( - - {stock.relation_desc?.data ? ( - // 升级:带引用来源的版本 - 添加折叠功能 - - { - e.stopPropagation(); - setIsDescExpanded(!isDescExpanded); - }} - cursor="pointer" - px={3} - py={2} - bg={PROFESSIONAL_COLORS.background.secondary} - borderRadius="md" - _hover={{ - bg: PROFESSIONAL_COLORS.background.cardHover, - }} - transition="background 0.2s" - position="relative" - > - - - - - - ) : ( - // 降级:纯文本版本(保留展开/收起功能) - - { - e.stopPropagation(); - setIsDescExpanded(!isDescExpanded); - }} - cursor="pointer" - px={3} - py={2} - bg={PROFESSIONAL_COLORS.background.secondary} - borderRadius="md" - _hover={{ - bg: PROFESSIONAL_COLORS.background.cardHover, - }} - transition="background 0.2s" - position="relative" - > - {/* 去掉"关联描述"标题 */} - - - {relationText} - - - - {/* 提示信息 */} - {isDescExpanded && ( - - ⚠️ AI生成,仅供参考 - - )} - - - )} - - )}