Chocolate Chip Cookie
본문 바로가기
프론트엔드/Java Script

리액트 에러 노트 : Warning: Cannot update a component (`UserDataProvider`) while rendering a different component

by Khookie 2024. 4. 4.

 

에러 : 

index.jsx:23 Warning: Cannot update a component (`UserDataProvider`) while rendering a different component (`LoginPage`). To locate the bad setState() call inside `LoginPage`, follow the stack trace as described in https://reactjs.org/link/setstate-in-render at LoginPage (http://localhost:5173/src/pages/login-page/index.jsx?t=1712222271893:22:24) at RenderedRoute (http://localhost:5173/node_modules/.vite/deps/react-router-dom.js?v=691d9805:3547:5)

 

Bug: too hard to fix "Cannot update a component from inside the function body of a different component." · Issue #18178 · face

Note: React 16.13.1 fixed some cases where this was overfiring. If upgrading React and ReactDOM to 16.13.1 doesn't fix the warning, read this: #18178 (comment) React version: 16.13.0 Steps To Repro...

github.com


발생: 

전체 앱을 감싸고 있는 UserDataProvider 컨텍스트 파일 에서 특정 함수 실행시 컨텍스트 파일 안에있는 state 변수 값을 변경한 후 LoginPage 로 이동하도록 로직을 작성했는데 
렌더링과 관련한 오류가 발생했다.
아직 컨텍스트 변수와 관련한 렌더링 중 로그인페이지로 이동하여 문제가 발생한것으로 보인다


해결 : 

특정 함수의 로직을 컨텍스트 state 변수 변경이 아닌 로컬스토리지 값만 변경하도록 변경하였고
기능이 로그아웃 기능관련 처리였기 때문에
특정 함수 마지막에 로그인 페이지로 window.location 을 이용해 이동한 후
해당 로컬스토리지 값으로 state 변수를 초기화하여 해결하였다

댓글