From 100dc4e500892e3fcf9bdfe98b44e7d114b3ac95 Mon Sep 17 00:00:00 2001 From: icarus Date: Fri, 22 Aug 2025 17:37:18 +0800 Subject: [PATCH] =?UTF-8?q?refactor(useFiles):=20=E4=BD=BF=E7=94=A8useMemo?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=89=A9=E5=B1=95=E5=90=8D=E5=A4=84=E7=90=86?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将扩展名处理逻辑移至useMemo中,避免不必要的重复计算。当props.extensions未提供时默认返回['*'] --- src/renderer/src/hooks/useFiles.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/renderer/src/hooks/useFiles.ts b/src/renderer/src/hooks/useFiles.ts index c37925ed5c..ead49315ac 100644 --- a/src/renderer/src/hooks/useFiles.ts +++ b/src/renderer/src/hooks/useFiles.ts @@ -1,6 +1,6 @@ import { FileMetadata } from '@renderer/types' import { filterSupportedFiles } from '@renderer/utils' -import { useCallback, useState } from 'react' +import { useCallback, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' type Props = { @@ -8,12 +8,20 @@ type Props = { extensions?: string[] } -export const useFiles = ({ extensions }: Props) => { +export const useFiles = (props?: Props) => { const { t } = useTranslation() const [files, setFiles] = useState([]) const [selecting, setSelecting] = useState(false) + const extensions = useMemo(() => { + if (props?.extensions) { + return props.extensions + } else { + return ['*'] + } + }, [props?.extensions]) + const onSelectFile = useCallback( async (multipleSelections: boolean = true) => { if (selecting) {