From 8f2e956fd01f700520ad02c310d92d93806dd379 Mon Sep 17 00:00:00 2001 From: xmk23333 Date: Mon, 8 Dec 2025 19:58:57 +0800 Subject: [PATCH] perf: optimize connection and log components with memoization and state management --- .../components/connections/connection-item.tsx | 15 ++++----------- src/renderer/src/components/logs/log-item.tsx | 4 ++-- src/renderer/src/pages/connections.tsx | 14 +++++++++++--- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/renderer/src/components/connections/connection-item.tsx b/src/renderer/src/components/connections/connection-item.tsx index 5b37994..49bdbd9 100644 --- a/src/renderer/src/components/connections/connection-item.tsx +++ b/src/renderer/src/components/connections/connection-item.tsx @@ -1,26 +1,19 @@ import { Button, Card, CardFooter, CardHeader, Chip } from '@heroui/react' import { calcTraffic } from '@renderer/utils/calc' import dayjs from '@renderer/utils/dayjs' -import React, { useEffect } from 'react' +import React from 'react' import { CgClose, CgTrash } from 'react-icons/cg' interface Props { index: number info: IMihomoConnectionDetail - selected: IMihomoConnectionDetail | undefined setSelected: React.Dispatch> setIsDetailModalOpen: React.Dispatch> close: (id: string) => void } const ConnectionItem: React.FC = (props) => { - const { index, info, close, selected, setSelected, setIsDetailModalOpen } = props - - useEffect(() => { - if (selected?.id === info.id) { - setSelected(info) - } - }, [info]) + const { index, info, close, setSelected, setIsDetailModalOpen } = props return (
@@ -37,7 +30,7 @@ const ConnectionItem: React.FC = (props) => {
= (props) => {
} > - {isDetailModalOpen && selected && ( - setIsDetailModalOpen(false)} connection={selected} /> + {isDetailModalOpen && selectedConnection && ( + setIsDetailModalOpen(false)} connection={selectedConnection} /> )}
@@ -403,7 +412,6 @@ const Connections: React.FC = () => {