오늘 create 부분을 거의 99% 완성 시켰다.
input에 넣은 value들을 받아와서 객체를 배열에 저장하게 되었는데 문제가 발생했다.
우선 localStorage에는 모든 리뷰데이터를 reviews에 넣기로 해서 아래와 같이 코드를 짰다.
let reviewStorage = [];
const saveReview = () => {
const review = {
id: Date.now(), //id 값 추가
movieId: localStorage.getItem("currentID"),
name: userName.value,
comment: comment.value,
star: Checked,
password: passwordInput.value,
};
reviewStorage.push(review); //배열에 review값 넣기
};
하지만 이렇게 작성한 localStorage는 페이지를 나갔다 들어오는 둥 리로드하면 하시 reviewStorage가 초기화가 되었다.
이유야 간단하다.. 다시 reviewStorage가 빈 배열로 초기화되기 때문이다.
해결 방법도 간단하다. 이태까지 저장한 객체의 배열을 다시 넣어준 뒤 새로운 값을 저장하면 된다.
const totalreviews = JSON.parse(localStorage.getItem("reviews"));
reviewStorage = totalreviews;
이 두줄만 saveReview 에 넣어주면 totalreview에 저장된 배열을 넣고
그걸 reviewStorage에 옮겨주면..(생각해보니까 그냥 다이렉트로 해도되는거였네)
원래 있던 review들이 저장이 되면서 잘 작동하는 것을 알 수 있다.
요번 프로젝트를 하면서는 정말 초기화와 작동의 경계를 알아가는 단계같다.