JSON.parse
: Array로 변경해주는 기능
JSON.parse(localStorage.getItem("todos"))
< (4) ['a', 'b', 'c', 'd']
// Loading todos
const savedToDos = localStorage.getItem(TODOS_KEY);
if(savedToDos !== null) {
const parsedToDos = JSON.parse(savedToDos);
} // savedToDos -> null이 아니라면 array로 변경됨
function sayHello() {
console.log("hello");
}
const savedToDos = localStorage.getItem(TODOS_KEY);
if(savedToDos !== null) {
const parsedToDos = JSON.parse(savedToDos);
parsedToDos.forEach(sayHello); // 각각의 아이템에 대해 sayHello 실행
}
- 콘솔에 배열의 수 만큼
sayHello
실행- 문제점 : 어떤 item을 사용하고 있는지 모름
function sayHello(item) {
console.log("this is the turn of", item);
}
const savedToDos = localStorage.getItem(TODOS_KEY);
if(savedToDos !== null) {
const parsedToDos = JSON.parse(savedToDos);
parsedToDos.forEach(sayHello);
}
item
각 항목을 알아볼 수 있게 해줌
const savedToDos = localStorage.getItem(TODOS_KEY);
if(savedToDos !== null) {
const parsedToDos = JSON.parse(savedToDos);
parsedToDos.forEach((item) => console.log("this is the turn of", item));
}
=>
→ arrow function(화살표 함수)
const savedToDos = localStorage.getItem(TODOS_KEY);
if(savedToDos !== null) {
const parsedToDos = JSON.parse(savedToDos); // 2. string으로 변환된 것을 JS에서 사용 가능한 배열로 변환
parsedToDos.forEach(paintToDo);
}
- 이미 만들어뒀던
paintToDo
를 실행하게 함- 문제점 : 새로고침 후 새로 저장한 것들만 localStorage에 저장되고 이전 것은 사라짐
- 원인 : app이 시작될 때 toDos array는 항상 비어있기때문에
const toDos = [];
→ app이 시작될 때 toDos array는 항상 비어있다
→ 이전에 입력한 todo는 포함하지 않음
function handleToDoSubmit(event) {
event.preventDefault();
const newToDo = toDoInput.value;
toDoInput.value = "";
toDos.push(newToDo); // *
paintToDo(newToDo)
saveToDos();
}
→ submit 될 때마다 빈 array에 push
function saveToDos() {
localStorage.setItem(TODOS_KEY, JSON.stringify(toDos));
}
→ 새로운 투두만 포함된 array를 저장
앱이 시작될 때 빈 값으로 시작하는 대신 const를 let으로 바꿔서 업데이트 가능하게 만듬
let toDos = [];
if(savedToDos !== null) {
const parsedToDos = JSON.parse(savedToDos);
toDos = parsedToDos; // *
parsedToDos.forEach(paintToDo);
}
toDos = parsedTodos
→ 웹 시작 시 리스트가 있었다면 toDos에 채움- 문제점 : 리스트를 삭제해도 localStorage에 그대로 있음