From 24e09a65bcce77e553f8030886ea8e82bd831889 Mon Sep 17 00:00:00 2001 From: bcjang Date: Wed, 26 Feb 2025 22:27:59 +0900 Subject: [PATCH] =?UTF-8?q?=EC=B2=AB=20=EC=A1=B0=ED=9A=8C=20=EB=8F=99?= =?UTF-8?q?=EC=95=88=20=EA=B3=84=EC=86=8D=20useEffect=EA=B0=80=20=EB=8F=84?= =?UTF-8?q?=EB=8A=94=ED=98=84=EC=83=81=EC=9C=BC=EB=A1=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/hook.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/utils/hook.js b/src/utils/hook.js index 4d7979a..a504d8a 100644 --- a/src/utils/hook.js +++ b/src/utils/hook.js @@ -1,4 +1,4 @@ -import { useCallback, useEffect, useState } from 'react'; +import { useCallback, useEffect, useRef, useState } from 'react'; import { useRecoilValue } from 'recoil'; import { AuthModal } from '../components/common'; import { authList } from '../store/authList'; @@ -81,10 +81,20 @@ export const withAuth = (requiredAuth) => (WrappedComponent) => { export const useTable = (tableData = [], options = {mode: 'multi'}) => { const [selectedRows, setSelectedRows] = useState([]); + const tableDataRef = useRef(tableData); // tableData가 변경될 때 선택된 행 초기화 useEffect(() => { - setSelectedRows([]); + const hasDataChanged = + tableData.length !== tableDataRef.current.length || + tableData.some((item, index) => + tableDataRef.current[index]?.id !== item.id + ); + + if (hasDataChanged) { + setSelectedRows([]); + tableDataRef.current = tableData; + } }, [tableData]); // 단일 행 선택/해제