From f242548f8b5af462d9d86e0a7e0be7f9f982b3aa Mon Sep 17 00:00:00 2001 From: icarus Date: Tue, 19 Aug 2025 11:08:20 +0800 Subject: [PATCH] =?UTF-8?q?refactor(=E8=AE=BE=E7=BD=AE=E9=A1=B5=E9=9D=A2):?= =?UTF-8?q?=20=E4=BC=98=E5=8C=96=E4=B8=BB=E9=A2=98=E5=91=BD=E5=90=8D?= =?UTF-8?q?=E5=BC=B9=E7=AA=97=E7=BB=84=E4=BB=B6=E6=80=A7=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 使用useCallback和useMemo优化回调函数和渲染性能 将重复的JSX代码提取为独立组件 --- .../ModelSettings/TopicNamingModalPopup.tsx | 64 +++++++++++-------- 1 file changed, 36 insertions(+), 28 deletions(-) diff --git a/src/renderer/src/pages/settings/ModelSettings/TopicNamingModalPopup.tsx b/src/renderer/src/pages/settings/ModelSettings/TopicNamingModalPopup.tsx index 0243954f9d..39dd3892ce 100644 --- a/src/renderer/src/pages/settings/ModelSettings/TopicNamingModalPopup.tsx +++ b/src/renderer/src/pages/settings/ModelSettings/TopicNamingModalPopup.tsx @@ -4,7 +4,7 @@ import { useSettings } from '@renderer/hooks/useSettings' import { useAppDispatch } from '@renderer/store' import { setEnableTopicNaming, setTopicNamingPrompt } from '@renderer/store/settings' import { Button, Divider, Flex, Input, Modal, Popover, Switch } from 'antd' -import { useState } from 'react' +import { useCallback, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' import { TopView } from '../../../components/TopView' @@ -31,13 +31,44 @@ const PopupContainer: React.FC = ({ resolve }) => { resolve({}) } - const handleReset = () => { + const handleReset = useCallback(() => { dispatch(setTopicNamingPrompt('')) - } + }, [dispatch]) TopicNamingModalPopup.hide = onCancel - const promptVarsContent =
{t('agents.add.prompt.variables.tip.content')}
+ const promptVarsContent = useMemo(() =>
{t('agents.add.prompt.variables.tip.content')}
, [t]) + + const TopicNamingSettings = useCallback(() => { + return ( + <> + +
{t('settings.models.enable_topic_naming')}
+ dispatch(setEnableTopicNaming(v))} /> +
+ +
+ +
{t('settings.models.topic_naming_prompt')}
+ + + +
+ dispatch(setTopicNamingPrompt(e.target.value.trim()))} + placeholder={t('prompts.title')} + /> + {topicNamingPrompt && ( + + )} +
+ + ) + }, [dispatch, enableTopicNaming, handleReset, promptVarsContent, t, topicNamingPrompt]) return ( = ({ resolve }) => { footer={null} centered> - -
{t('settings.models.enable_topic_naming')}
- dispatch(setEnableTopicNaming(v))} /> -
- -
- -
{t('settings.models.topic_naming_prompt')}
- - - -
- dispatch(setTopicNamingPrompt(e.target.value.trim()))} - placeholder={t('prompts.title')} - /> - {topicNamingPrompt && ( - - )} -
+
) }