• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 React 게시판 최근 본 상품이 새로고침하면 사라져요

최근 본 상품이 새로고침하면 사라져요

3 글 보임 - 1 에서 3 까지 (총 3 중에서)
  • 글쓴이
  • #50018

    참가자
    localStorage에 최근 본 상품 여러개 담고 싶은데 다른 페이지로 넘어가면 바로 초기화 되네요
    강의에서 배운 코드 복붙도 해봤는데 초기화 되는 건 똑같아요
    특별히 뭔가를 건든 게 없는데 왜 이러는 걸까요?
    
    아무래도 App.js의 useEffect [] 때문에 페이지가 새로 로드될때마다 빈 배열이 새로 생성되는 것 같기도 한데.. 
    해결 방법을 모르겠어요..
    
    App.js
    
      useEffect(() => {
        localStorage.setItem("watched", JSON.stringify([]));
      }, []);
    Detail.js
    
      useEffect(() => {
        let recentItem = localStorage.getItem("watched");
        recentItem = JSON.parse(recentItem);
        recentItem.push(searchItem.id);
        localStorage.setItem("watched", JSON.stringify(recentItem));
      });
    
    
    그리고 localStarage에 저장되는 데이터를 여러 컴포넌트에서 사용하려 할 때에는
    굳이 리덕스 store에 만들어서 불러다 사용할 필요는 없는 건가요?
    #50038

    참가자
    Detail.js 의 useEffect()의 끝에 [] 중괄호를 넣으면 자꾸 아래 같은 에러가 발생하고 id가 localStorage에 들어가지 않습니다.
     
    
    React Hook useEffect has a missing dependency: 'searchItem.id'. Either include it or remove the dependency array.
     
    
      useEffect(() => {
        let recentItem = localStorage.getItem("watched");
        recentItem = JSON.parse(recentItem);
        recentItem.push(searchItem.id);
        recentItem = new Set(recentItem); // 중복 제거
        recentItem = Array.from(recentItem); // array 로 변환
        localStorage.setItem("watched", JSON.stringify(recentItem));
      }, []);
    
    괄호 안에 [searchItem] 을 넣어주면 에러가 사라지긴 하는데 이래도 localStorage에 id값이 저장되지 않아요..
     
    #50050

    codingapple
    키 마스터
    App.js 로드할 때 마다 로컬스토리지 watched 항목을 []로 바꾸라고 코드짜놔서그렇습니다 if 이런거 추가합시다 
    searchItem 이라는 변수가 주변에 정의된게 없어서 그런가봅니다 
    
3 글 보임 - 1 에서 3 까지 (총 3 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관, 개인정보처리방침
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠