From 098107f38ed83de638fc86ee7cbda3e44015c76a Mon Sep 17 00:00:00 2001
From: zdl <3489966805@qq.com>
Date: Sun, 23 Nov 2025 10:21:04 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E8=B0=83=E6=95=B4=E5=85=B3=E8=81=94?=
=?UTF-8?q?=E6=8F=8F=E8=BF=B0UI?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/StockChart/StockChartModal.js | 41 +++++++++++++-------
1 file changed, 27 insertions(+), 14 deletions(-)
diff --git a/src/components/StockChart/StockChartModal.js b/src/components/StockChart/StockChartModal.js
index 30f9b48d..96d553fe 100644
--- a/src/components/StockChart/StockChartModal.js
+++ b/src/components/StockChart/StockChartModal.js
@@ -1,5 +1,5 @@
// src/components/StockChart/StockChartModal.js - 统一的股票图表组件
-import React, { useState, useEffect, useRef } from 'react';
+import React, { useState, useEffect, useRef, useMemo } from 'react';
import { Modal, ModalOverlay, ModalContent, ModalHeader, ModalCloseButton, ModalBody, Button, ButtonGroup, VStack, HStack, Text, Badge, Box, Flex, CircularProgress } from '@chakra-ui/react';
import ReactECharts from 'echarts-for-react';
import * as echarts from 'echarts';
@@ -24,24 +24,26 @@ const StockChartModal = ({
const [chartData, setChartData] = useState(null);
const [preloadedData, setPreloadedData] = useState({});
- // 处理关联描述(兼容对象和字符串格式)
- const getRelationDesc = () => {
- const relationDesc = stock?.relation_desc;
+ // 处理关联描述(兼容对象和字符串格式)- 使用 useMemo 缓存计算结果
+ const relationDesc = useMemo(() => {
+ const desc = stock?.relation_desc;
- if (!relationDesc) return null;
+ if (!desc) return null;
- if (typeof relationDesc === 'string') {
- return relationDesc;
- } else if (typeof relationDesc === 'object' && relationDesc.data && Array.isArray(relationDesc.data)) {
+ if (typeof desc === 'string') {
+ return desc;
+ }
+
+ if (typeof desc === 'object' && desc.data && Array.isArray(desc.data)) {
// 新格式:{data: [{query_part: "...", sentences: "..."}]}
- return relationDesc.data
+ return desc.data
.map(item => item.query_part || item.sentences || '')
.filter(s => s)
.join(';') || null;
}
return null;
- };
+ }, [stock?.relation_desc]);
// 预加载数据
const preloadData = async (type) => {
@@ -540,7 +542,8 @@ const StockChartModal = ({
-
+ {/* 图表区域 */}
+
{loading && (
- {getRelationDesc() && (
+ {/* 关联描述 */}
+ {relationDesc && (
- 关联描述:
- {getRelationDesc()}
+
+ 关联描述:
+
+
+ {relationDesc}
+
)}