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]); // 단일 행 선택/해제