Skip to content

react link sessionstorage performance error issue #559

Answered by woohm402
yeonsumia asked this question in Q&A
Discussion options

You must be logged in to vote

가장 유력하게 의심해볼만한 상황은 로그인되었는지 확인하는 로직이 BrowserRouter 밖에 있는 경우입니다.

Link를 통해 url을 변경했을 때, 정말 url만 변경됩니다. 그에 따라 BrowserRouter 아래에 있는 아이들은 선택적으로 mount / unmount되고, 자연히 render됩니다. 반면 콘솔 로그를 찍어보시면 아시겠지만, Route된 컴포넌트 상위 로직 (가령 App.js)은 render되지 않습니다. 때문에 로그인되었는지 확인하는 로직이 Route된 컴포넌트 상위 컴포넌트의 render 과정 혹은 useEffect 안에 있다면, render가 일어나지 않기 때문에, 해당 로직이 실행되지 않고, 결국 화면이 바뀌지 않습니다.

만약 이 내용이 원인이 아니었다면, 이건 아마 코드 구조를 좀더 많이 확인해야 알 수 있을 것 같습니다. 그런 경우 작업하고 계신 브랜치에 푸시하시면 확인해 보겠습니다!


때문에 일반적으로 차용하는 로직은 다음과 같습니다.

  1. 로그인 판별 로직을 Route 안으로 넣기
    • 보통 HOC 를 이용해 로그인되었는지를 Route 안에서 판별
    • (이 블로그 참고)
  2. 로그인 정보를 state로 관리함으로서 변경 시 상위 컴포넌트의 render가 일어나도록 함
    • 이를 위해, 로그인 정보를 state에도 (보통 최상단 index.js에 있는 Context) 저장하고 sessionStorage에도 저장…

Replies: 2 comments

Comment options

You must be logged in to vote
0 replies
Answer selected by woohm402
Comment options

yeonsumia
Sep 17, 2021
Collaborator Author

You must be logged in to vote
0 replies
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
React React 관련 내용
2 participants
Converted from issue

This discussion was converted from issue #424 on October 07, 2021 14:42.