-
안녕하세요, react assignment 2를 하면서 질문이 생겨 issue 게재합니다. <Link to='/students' onClick={() => window.sessionStorage.setItem('loginCheck', 'true')}>
<div className="LoginButton">
...
</div>
</Link> 다음과 같이 session storage에 로그인 정보를 저장하려고 하였는데, loginbutton을 클릭하면
|
Beta Was this translation helpful? Give feedback.
Replies: 2 comments
-
가장 유력하게 의심해볼만한 상황은 로그인되었는지 확인하는 로직이
만약 이 내용이 원인이 아니었다면, 이건 아마 코드 구조를 좀더 많이 확인해야 알 수 있을 것 같습니다. 그런 경우 작업하고 계신 브랜치에 푸시하시면 확인해 보겠습니다! 때문에 일반적으로 차용하는 로직은 다음과 같습니다.
|
Beta Was this translation helpful? Give feedback.
-
지적해주신 부분이 맞네요! |
Beta Was this translation helpful? Give feedback.
가장 유력하게 의심해볼만한 상황은 로그인되었는지 확인하는 로직이
BrowserRouter
밖에 있는 경우입니다.Link
를 통해 url을 변경했을 때, 정말 url만 변경됩니다. 그에 따라BrowserRouter
아래에 있는 아이들은 선택적으로mount
/unmount
되고, 자연히render
됩니다. 반면 콘솔 로그를 찍어보시면 아시겠지만, Route된 컴포넌트 상위 로직 (가령App.js
)은 render되지 않습니다. 때문에 로그인되었는지 확인하는 로직이 Route된 컴포넌트 상위 컴포넌트의 render 과정 혹은useEffect
안에 있다면, render가 일어나지 않기 때문에, 해당 로직이 실행되지 않고, 결국 화면이 바뀌지 않습니다.만약 이 내용이 원인이 아니었다면, 이건 아마 코드 구조를 좀더 많이 확인해야 알 수 있을 것 같습니다. 그런 경우 작업하고 계신 브랜치에 푸시하시면 확인해 보겠습니다!
때문에 일반적으로 차용하는 로직은 다음과 같습니다.
HOC
를 이용해 로그인되었는지를 Route 안에서 판별state
에도 (보통 최상단index.js
에 있는Context
) 저장하고sessionStorage
에도 저장…