From b4aa4716a6bd9d127ffe8eede8298d2d1015c113 Mon Sep 17 00:00:00 2001 From: Daseul Kim Date: Tue, 1 Jul 2025 14:51:16 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20ID=20Save=20=EC=B2=B4=ED=81=AC=EB=B0=95?= =?UTF-8?q?=EC=8A=A4=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Login.tsx | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/src/components/Login.tsx b/src/components/Login.tsx index af2c3fd..9f7da9d 100644 --- a/src/components/Login.tsx +++ b/src/components/Login.tsx @@ -28,12 +28,37 @@ export default function Login() { const { session, setSession } = useSessionStore() const [value, setValue, removeValue] = useLocalStorage<{ indivisualData: string }>('hanasysIndivisualState', { indivisualData: '' }) + // ID Save 기능을 위한 로컬스토리지 + const [savedLoginData, setSavedLoginData, removeSavedLoginData] = useLocalStorage<{ + loginId: string + idSaveEnabled: boolean + }>('hanasysLoginData', { + loginId: '', + idSaveEnabled: false, + }) + const reducer = (state: AccountState, newState: Partial) => ({ ...state, ...newState }) const [account, setAccount] = useReducer(reducer, { loginId: '', pwd: '', }) + // 컴포넌트 마운트 시 저장된 로그인 정보 불러오기 + useEffect(() => { + if (savedLoginData.idSaveEnabled) { + setIdSave(true) + setAccount({ loginId: savedLoginData.loginId }) + } else { + setIdSave(false) + setAccount({ loginId: '' }) + } + }, []) + + // ID Save 체크박스 변경 시 처리 (UI 상태만 변경) + const handleIdSaveChange = (checked: boolean) => { + setIdSave(checked) + } + const isValidEmail = (email: string) => { const emailRegex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/ return emailRegex.test(email) @@ -102,6 +127,15 @@ export default function Login() { setValue({ indivisualData: account.pwd, }) + + // ID Save 체크박스 체크 시 저장 + idSave + ? setSavedLoginData({ + loginId: account.loginId, + idSaveEnabled: true, + }) + : removeSavedLoginData() + // 세션 정보 저장 console.log('🚀 ~ Login ~ loginData:', loginData) setSession({ @@ -158,7 +192,7 @@ export default function Login() {
- setIdSave(!idSave)} /> + handleIdSaveChange(e.target.checked)} />