해결된 질문
작성
·
515
0
안녕하세요! 강의 듣고 토이프로젝트 진행중인 학생입니다.
SSR을 통해 데이터를 프론트에서 미리 가져와주는 작업을 진행중입니다.
page/index.js의 경우 해당 페이지에 로그인 후 새로고침을 하면
app.js에서 계속해서 me 데이터를 가져와주어 문제가 없는데
page/user.js 페이지를 만들어서 작업중인데 해당 페이지는 링크를 타고 그대로 들어가면 문제가 없으나
새로고침 시 me데이터가 아예 사라지는 문제가 있습니다.
콘솔로그 찍어보니 LOAD_USER_REQUEST가 실행은 되는것 같은데 제대로 값을 불러내지 못하는것 같습니다.
어느 부분이 잘못된 것인지 저 나름대로 코드를 비교해보았으나 갈피를 잡지 못하여 질문 드립니다 ㅠㅠ
덧글로 파일 코드 작성해보겠습니다! 도움 주시면 감사하겠습니다 ㅠㅠ
답변 7
1
0
ㅠㅠㅠㅠ아이고.... 뭐가 잘못됐던건지 찾아냈습니다 제가 load_user_request 부분을 사가에서 takeEvery가 아닌 takeLatest로 해놨었네요ㅠㅠ 아예 뭐가 문젠지를 갈피를 못잡고 있었는데 LOAD_USER_REQUEST 반복 찝어주셔서 저부분 확인할 수 있었습니다 코드 봐주시고 도움 주셔서 감사합니다 !!
0
네! _app.js에선 모든 페이지에서 공통적으로 사용자 me를 데려오도록 하고 user페이지에서 userInfo를 데려오는데 해당 페이지에서 그 상태로 새로고침 할 시에는 user.me 데이터가 아예 null이 되어버립니다 ㅠㅠ..! userInfo는 새로고침 하더라도 잘 불러오구요..! 해당 페이지에서 덧글을 다는 기능을 위해 me가 그대로 보존되어야 하는데 새로고침 시 사라집니다 ㅜㅜ
user페이지의 request_load_user는 제대로 작동되는데 _app.js에서 request_load_user가 제대로 동작 했음에도(user.me에 사용자 본인의 데이터를 가져오도록) 데브툴을 확인해보면 user.me에 아무것도 담기지 않는(null) 문제가 생깁니다..!
0
user 페이지에서는 action.me가 아니라 action.userInfo 아닌가요? 위에 리덕스 데브툴 사진 보니까 action.userInfo에 시민 잘 들어있네요.
0
_app.js에선 사용자 본인의 정보를 불러와 me에 담고 user.js에선 /user/1로 이동했을 경우 id가 1인 사용자의 정보를 불러와 userInfo에 담는 형식으로 하고 있습니다! 이 부분은 nodebird의 page/user.js를 참고하여 작성하였어요..! 혹시 둘 다 같은 reducer를 사용하는 것이 문제가 될 수도 있을까요...? nodebird에선 user페이지 접속 시 me가 제대로 불러와졌던것 같은데 제 코드는 다른 페이지 접속시엔 잘 동작하는데 user페이지만 me를 제대로 불러오지 못하네요 ㅠㅠ
0
제로초님 계속 말을 번복해서 죄송합니다 ㅠㅠ
계속 콘솔로그 찍어서 확인해보니.. 사용자 데이터를 잘 불러와 LOAD_USER_SUCCESS까지 닿아서
값을 바꿔준 직후에 draft.me를 찍어보면 제대로 잘 뜨는데
브라우저에서 확인하면 me 가 뜨지 않네요 ㅠㅠ
다른 곳에서 draft.me를 초기화 한 것은 없는것 같은데
문제가 뭔지를 모르겠습니다 ㅠㅠ
action.data가 draft.me로 들어가기는 하나 브라우저에선 me가 null로 뜹니다!
index.js와 그 외 다른 페이지에선 me를 제대로 넣어주는데 user.js 페이지에서만 이런 문제가 나타납니다 ㅜㅜ
<user reducer 전체> (현재 LOAD_USER_SUCCESS가 강의내용과는 조금 다른 형식으로 되어있는데 제로초님께서 써주셨던 코드 그대로 복붙해보아도 같은 문제가 생깁니다)
0
front/pages/_app.js
front/pages/index.js
front/pages/user.js (문제가 되는 부분입니다)
front/server.js