perf: memoize the proxy col items (#1029)

This commit is contained in:
oomeow 2024-05-18 15:14:22 +08:00 committed by GitHub
parent db5d14e0ce
commit 43f0b935cf
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 15 additions and 12 deletions

View File

@ -122,7 +122,7 @@ export const ProxyGroups = (props: Props) => {
return ( return (
<Virtuoso <Virtuoso
ref={virtuosoRef} ref={virtuosoRef}
style={{ height: "calc(100% - 12px)" }} style={{ height: "calc(100% - 16px)" }}
totalCount={renderList.length} totalCount={renderList.length}
increaseViewportBy={256} increaseViewportBy={256}
itemContent={(index) => ( itemContent={(index) => (

View File

@ -19,7 +19,7 @@ import type { IRenderItem } from "./use-render-list";
import { useVerge } from "@/hooks/use-verge"; import { useVerge } from "@/hooks/use-verge";
import { useRecoilState } from "recoil"; import { useRecoilState } from "recoil";
import { atomThemeMode } from "@/services/states"; import { atomThemeMode } from "@/services/states";
import { useEffect, useState } from "react"; import { useEffect, useMemo, useState } from "react";
import { convertFileSrc } from "@tauri-apps/api/tauri"; import { convertFileSrc } from "@tauri-apps/api/tauri";
import { downloadIconCache } from "@/services/cmds"; import { downloadIconCache } from "@/services/cmds";
@ -171,6 +171,18 @@ export const ProxyRender = (props: RenderProps) => {
} }
if (type === 4 && !group.hidden) { if (type === 4 && !group.hidden) {
const proxyColItemsMemo = useMemo(() => {
return proxyCol?.map((proxy) => (
<ProxyItemMini
key={item.key + proxy.name}
group={group}
proxy={proxy!}
selected={group.now === proxy.name}
showType={headState?.showType}
onClick={() => onChangeProxy(group, proxy!)}
/>
));
}, [proxyCol, group, headState]);
return ( return (
<Box <Box
sx={{ sx={{
@ -183,16 +195,7 @@ export const ProxyRender = (props: RenderProps) => {
gridTemplateColumns: `repeat(${item.col! || 2}, 1fr)`, gridTemplateColumns: `repeat(${item.col! || 2}, 1fr)`,
}} }}
> >
{proxyCol?.map((proxy) => ( {proxyColItemsMemo}
<ProxyItemMini
key={item.key + proxy.name}
group={group}
proxy={proxy!}
selected={group.now === proxy.name}
showType={headState?.showType}
onClick={() => onChangeProxy(group, proxy!)}
/>
))}
</Box> </Box>
); );
} }