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

home2 게시판 React 게시판 useEffect 질문 드립니다.

useEffect 질문 드립니다.

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

    강병민
    참가자

      const [objArr, setObjArr] = useState([]);

      useEffect(() => {
        let datas = localStorage.getItem("test2");
        datas = JSON.parse(datas);
        setObjArr(datas);
      }, [objArr]);

      const handleArr = (e) => {
        let copy = [...objArr];
        copy = copy.filter((data) => {
          return data.id !== e.target.dataset.id;
        });
        localStorage.setItem("test2", JSON.stringify(copy));
      };

    이런식으로 코드를 짜서 버튼을 클릭하면 Localstorage 값을 바꿔주고, 그 값을 objArr 스테이트에 담아서 렌더 하는데 ,

    Warning: Maximum update depth exceeded. This can happen when a component calls setState inside useEffect, but useEffect either doesn't have a dependency array, or one of the dependencies changes on every render. 이런 에러가 뜹니다.  의존성배열 안에 있는 값이 계속 바뀌면서 무한 업데이트가 된다는 것 같은데, 어떻게 해결 해야 하나요??ㅠㅠ

    #36617

    강병민
    참가자

    위 코드를 수정해서 useEffect 안에 있는 코드를 함수로 만든 뒤 , 

    handleArr  마지막줄에서 호출해 줬는데, 이런방식으로 써도 괜찮은 건가요??

    #36620

    codingapple
    키 마스터

    setObjArr(datas) 아마 이 부분을 밖으로 빼야 무한루프가 근본적으로 해결될듯요 

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 호 / 개인정보관리자 : 박종흠