TIL

240507 TIL 열여섯번째날

8나지 2024. 5. 7. 00:38

// 내생각 색깔글씨 : 중요표시 

공부한 내용 - 프로젝트 하며 나온 코드 분석

담당 - 영화리뷰 CRUD (리뷰 등록, 수정, 삭제 구현)

JSON. parse <-> JSON.stringify

JSON. parse : JSON 형식의 문자열을 입력받아 자바스크립트 객체로 변환하는 내장함수

                        (이때 객체로 변환하는 과정을 파싱이라고 함)

JSON.stringify : 자바스크립트 객체를 JSON문자열로 변환하는데 사용됨

(선택적으로 replacer 함수를 두번째 인자로 전달 할 수 있음. 이 함수는 각 속성에 대해 호출 되어 값을 변환할 수 있음. 함수, 날짜, 정규표현식 등의 특수 객체는 문자열로 변환.)

 

addEventListener :  JavaScript에서 이벤트 리스너를 등록하는 메서드입니다

  1. 특정 HTML 요소에 이벤트를 모니터링하게 해줍니다.
  2. 하나의 요소에 여러 개의 이벤트 핸들러를 등록할 수 있습니다.
  3. 이벤트 발생 시 호출될 함수를 지정할 수 있습니다.
  4. 이벤트 캡처링과 버블링 단계에서 동작을 제어할 수 있습니다
  5. IE8 이하에서는 attachEvent 메서드를 사용해야 합니다.

따라서 addEventListener는 JavaScript에서 특정 HTML 요소의 이벤트를 감지하고 처리하는 데 사용되는 핵심적인 메서드

 

사용방법 : 1. 이벤트 감지할 HTML 요소 선택

                2.addEventListener()메서드 사용하여 이벤트 리스너 등록

                  - 첫번째 인자로 이벤트 유형 (ex. click, keydown 등) 지정

                  - 두번째 인자로 이벤트 발생시 호충될 콜백 함수 지정

               3. 선택적으로 이벤트 캡처링과 버블링 단계에서 동작제어할 수 있음

             ex) 버튼 클릭 이벤트 처리시 

                  const button = document.querySelector('button');

                  button.addEventListener('click', (event) => {

                  console.log('Button clicked!');

                  });

 

 

query : 데이터 베이즈 조회, 데이터 요청 . 등데이터 처리하는 행위를 나타냄

commentsContainer.append(newComment);

 - commentsContainer : 변수이름, 일반적으로 댓글을 담는 컨테이너요소

 - append : 돔 api에서 제공하는 메서드, 선택한 요소의 마지막 자식 요소로 새로운 요소 추가

 결론 : commentsContainer 요소의 마지막 자식 요소로 newComment추가

localStorage.setItem("reviews", JSON.stringify(reviews));
- localStorage : 웹브라우저에서 제공하는 api, 키-값 의 형태로 데이터 저장할 수 있는 클라이언트 측 데이터 베이스
- setItem() : 로컬스토리지에 데이터 저장하는 역할. 첫번째 인자는 키, 두번째 인자는 값
- 로컬스토리지에는 문자열 형태로 저장해야하므로 JSON.stringify(reviews) 로 변환 

결론 : 사용자가 작성한 리뷰데이터를 브라우저 로컬스토리지에 저장할 수 있음. 이렇게 저장된 데이터는 페이지 새로 고침 후에도 유지되어 사용자가 이전에 작성한 리뷰를 계속 확인할 수 있음

 

registerDeleteHandler(newComment, reviews);
- newComment 요소에 삭제버튼 클릭 이벤트 핸들러 등록
- 삭제버튼 클릭하면 'newCommnet' 요소가 Dom에서 제거 됨
- 그와 동시에 reviews 배열에서 해당 리뷰정소 삭제
- 삭제된 리뷰정보는 로컬스토리지에서도 제거 됨
결론 : 사용자가 작성한 리뷰를 동적으로 삭제할 수 있으며, 삭제된 리뷰 정보는 로컬스토리지에서도 제거되어 데이터 일관성 유지할 수 있음
 
회고 : 주말과 연휴를 포함해서 구글링을 열심히... 했다. 목표의 90%까지 도달했는데 마지막으로 리뷰 수정내용이 바로 적용이 안되서 도움받아 보니 window.location.reload(); 요 친구탓이였다. 처음에는 리로드를 맨밑에 뒀다가 자꾸 내용을 리로드 해서 지웠더니..ㅎㅎ  반영이 안되었었다. 결론은 업데이트 아래에 넣으면 잘 굴러갔음.. 프로젝트 하며 느낀건데 순서 위치를 파악하는게 많이 중요하다..😂

'TIL' 카테고리의 다른 글

240510 TIL 열아홉번째날 Node.js 입문 1 - 1~2  (0) 2024.05.10
240508 TIL 열일곱째날  (0) 2024.05.08
240503 TIL 열다섯번째날  (0) 2024.05.03
240502 열네번째날 TIL  (0) 2024.05.02
240501 열세번째날 TIL  (0) 2024.05.01