
❌
let userId = localStorage.getItem(ID);
if (userId !== "") {
setEmail(userId);
}
⭕
let userId = localStorage.getItem(ID);
if (userId !== "") {
setEmail(**JSON.parse**(userId));
}
📌loginBtn
const handleLogin = (e) => {
e.preventDefault();
localStorage.setItem(ID, JSON.stringify(email));
localStorage.setItem(CHECKED, saveChecked);
};
✏️JSON.stringify(email) id 값은 문자열 형태로만 존재하지않고, 문자+숫자 형태 등 다양한 조합이 있을 수 있다. 따라서 JSON 문자열 형태로 변환해주는것이 일관성 있다.
check상태의 경우는 boolean 값으로 true 또는 false의 값만 가지고 있기 때문에 별다른 변환을 하지 않아도 된다.
📌 useEffect 전체
useEffect(() => {
//checkbox 상태 가져오기
let idChecked = JSON.parse(localStorage.getItem(CHECKED));
if (idChecked) {
setSaveChecked(idChecked);
} else {
localStorage.setItem(ID, "");
}
//저장되어 있는 id 값 가져오기
let userId = localStorage.getItem(ID);
if (userId !== "") {
setEmail(JSON.parse(userId));
}
}, []);
checkbox 상태 가져오기
JSON 형태로 저장된 모든 data는 JSON 문자열로 저장되기 때문에 boolean 값도 문자열 형태로 저장된다. 따라서 반드시 JSON.parse( )의 작업을 거쳐 본래의 boolean 값을 받아와야한다.
저장되어 있는 id 값 가져오기
userId는 어차피 문자열이고, 또 빈 값일 때, 변환해줄 수 없으므로 일단 localstorage에 저장된 JSON 문자열 형태 그대로 받아주고, id input에 보여줄때 변환해서 보여준다.
