3주차 프리코스 미션 '자판기'에서 배운 이론을 정리합니다.
document.querySelector('li')
는 dom 요소 선택자이다.
하지만 element.querySelector('li')
는 element 내에 있는 li태그를 가져온다. (여기서 element는 부모 dom요소)이때, element 아래의 모든 li를 가져오고 싶으면 querySelectorAll을 사용하면 된다.
localStorage는 상태 관리 시스템이다. 여기서 상태란, 변하는 데이터다.
localStorage의 문법
localStorage에 항목 추가
localStorage.setItem('key', 'value');
localStorage는 기본적으로 key, value를 문자열으로 관리한다.
만약 value로 객체를 넣고 싶다면, 객체를 문자열로 관리할 수 있는 방법이 있는데 JSON.stringify
를 사용하면 된다.
또한, 객체로 넣은 것을 가져오고 싶을 때는 JSON.parse
를 통해 가져오면 된다.
JSON.stringify()
: 자바스크립트 객체 → JSON 문자열
JSON.parse()
: JSON 문자열 → 자바스크립트 객체
const store = {
setLocalStorage(menu) {
localStorage.setItem("menu", JSON.stringify(menu)); //key-value형태로 localStorage에 저장(그리고 반드시 string들어가야함)
},
getLocalStorage() {
return JSON.parse(localStorage.getItem("menu"));
}
}
localStorage에 있는 항목 읽기
const tmp = localStorage.getItem('key'); //key에 해당하는 value값을 가져옴
getItem을 했는데, 'key'가 없다면 null을 리턴한다.
localStorage 업데이트 후 → rendering
🔗 reference
element의 속성으로 data-menu-id
를 만들었다면, 이걸 가져올때는 element.dataset.menuId
로 가져올 수 있다.
(블랙커피 수정)
dom 요소 선택자(querySelector)에 대한 네이밍은 $ 을 삽입해주면 구분이 쉽다.
ex) const $menuName = e.target.closest('li').querySelector('.menu')