경로: 브라우저 > 개발자도구 > 어플리케이션 > 로컬 스토리지
localStorage.setItem("키", "값");
localStorage.getItem("키");
localStorage.removeItem("키");
예시:
clear, removeItem은 로컬스트리지 값을 지울때 사용한다.
로컬스토리지(setItem을 사용하여 키와 값을 넣어준 모습):
JS
const loginForm = document.querySelector("#login-form");
const loginInput = document.querySelector("#login-form input");
const greeting = document.querySelector("#greeting");
const HIDDEN_CLASSNAME = "hidden"; // 관습 비교적 중요하지 않은 단순 문자열 같은경우 대문자를 사용하고 스네이크 방식으로 작성
function onLoginSubmit(e) {
e.preventDefault();
const username = loginInput.value;
loginForm.classList.add(HIDDEN_CLASSNAME);
greeting.innerText = `Hello ${username}`;
greeting.classList.remove(HIDDEN_CLASSNAME);
localStorage.setItem("username", username);
}
loginForm.addEventListener("submit", onLoginSubmit);
HTML에서 인풋란에 값을 입력하고 제출했을때 로컬스토리지의 결과:
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Momentum App</title>
<link rel="stylesheet" href="Momentum.css">
</head>
<body>
<form id="login-form" class="hidden">
<input
required
maxlength="10"
type="text"
placeholder="What is your name?" />
<input type="submit" value="Log In" />
</form>
<h1 id="greeting" class="hidden"></h1>
<script src="Momentum.js"></script>
</body>
</html>
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";
function onLoginSubmit(e) {
e.preventDefault();
const username = loginInput.value;
loginForm.classList.add(HIDDEN_CLASSNAME);
localStorage.setItem(USERNAME_KEY, username);
paintGreetings(username);
}
function paintGreetings(username) {
greeting.classList.remove("hidden");
greeting.innerText = `Hello ${username}`;
}
const savedUserName = localStorage.getItem(USERNAME_KEY);
// console.log(savedUserName);
if(savedUserName === null) {
loginForm.classList.remove("hidden");
loginForm.addEventListener("submit", onLoginSubmit);
} else {
loginForm.classList.add("hidden");
paintGreetings(savedUserName);
}
코드가 많이 복잡해졌다 잘 정리해보자.(코드 리팩토링까지 해버림)
const savedUserName = localStorage.getItem(USERNAME_KEY); // "username"
console.log(savedUserName);
콘솔창:
if (savedUserName === null) {
loginForm.classList.remove(HIDDEN_CLASSNAME);
loginForm.addEventListener("submit", onLoginSubmit);
} else {
loginForm.classList.add(HIDDEN_CLASSNAME
);
greeting.classList.remove(HIDDEN_CLASSNAME);
greeting.innerText = `Hello ${savedUserName}`
}
fucntion paintGreetings (username) {
greeting.classList.remove(HIDDEN_CLASSNAME);
greeting.innerText = `Hello ${username}`
}
function onLoginSubmit(e) {
e.preventDefault();
const username = loginInput.value;
loginForm.classList.add(HIDDEN_CLASSNAME);
localStorage.setItem(USERNAME_KEY, username);
paintGreetings(username);
}
결과: