- 첫 화면에서는 form, h1태그가 모두 숨겨진 상태
- localStorage를 확인하고 사용자 정보가 저장되어 있으면 h1태그를 표시
- 사용자 정보가 저장되어 있지 않으면 form태그를 표시
form 화면일 때
h1 화면일 때
코드 - greeting.js
const loginForm = document.querySelector("#login-form");
const loginInput = document.querySelector("#login-form input");
const greeting = document.querySelector("#greeting");
//자주쓰는 문자열 변수로 고정
const HIDDEN_CLASSNAME = "hidden";
const USERNAME_KEY = "username";
//submit버튼을 눌렀을 때 동작
function onLoginSubmit(event) {
event.preventDefault();
loginForm.classList.add(HIDDEN_CLASSNAME);
const username = loginInput.value;
//localStorage에 username을 담는 setItem 활용
localStorage.setItem(USERNAME_KEY, username);
paintGreetings(username);
}
//저장된 이름이 있으면 h1태그에 넣어서 표시하는 paintGreetings 함수
function paintGreetings(username) {
greeting.innerText = `Hello ${username}`;
greeting.classList.remove(HIDDEN_CLASSNAME);
}
//localStorage의 item을 받아와야함
const savedUsername = localStorage.getItem(USERNAME_KEY);
if (savedUsername === null) {
//저장된 이름이 없으면 form을 표시
loginForm.classList.remove(HIDDEN_CLASSNAME);
loginForm.addEventListener("submit", onLoginSubmit);
} else {
//저장된 이름이 있으면 h1을 표시 > 함수로 수정
paintGreetings(savedUsername);
}
정리
localStorage.getItem(USERNAME_KEY) : 로컬스토리지의 아이템을 가져옴
localStorage.setItem(USERNAME_KEY, username) : 로컬스토리지에 아이템을 담음