-
카테고리
-
세부 분야
풀스택
-
해결 여부
해결됨
분해구조 할당자에 이상한 값이 들어오네요
21.09.10 17:14 작성 조회수 113
3
case types.SET_PHOTO_URL:
return {
...state,
currentUser: { ...state.currentUser, photoURL: action.payload }
}
강의에 나온 코드로 처리를 하면
기존 currentUser스키마가 아닌
_delegate, multifactor가 들어가면서 이상하게 출력됩니다.
그래서 아래와 같이 JSON.parse, JSON.stringify를 통해 처리를 하면 원하는대로 동작을 하게 되는것을 확인했는데 정확한 이유를 모르겠네요
case types.SET_PHOTO_URL:
return {
...state,
currentUser: { ...JSON.parse(JSON.stringify(state.currentUser)), photoURL: action.payload }
}
user_reducer에서
console.log(`before state currentUser: ${JSON.stringify(state.currentUser)}`);
console.log(`before state currentUser2: ${JSON.stringify({ ...state.currentUser }
요렇게 출력했을 때 두 값이 다르게 출력되었습니다.
따라하며 배우는 리액트, 파이어베이스 - 채팅 어플리케이션 만들기[2023.12 리뉴얼]
프로필 이미지 수정(3) 리덕스 스토어 데이터 변경 및 데이터베이스에 데이터 저장
강의실 바로가기
답변을 작성해보세요.
3
John Ahn
지식공유자2021.09.13
안녕하세요 !!!
얘기해주신걸 보고 저도 한번 해봤는데 정말그렇게 되네요 ...
처음에
App.js 에서
user로 받아온 값이 리덕스 스토어에 들어갈때는 필요한 정보만 들어가는데
그걸 ...state.currentUser로 다시 넣을때는 모든 값이 들어가게 되네요 ...
그리고 말씀해주신것처럼 stringfy 와 parse를 해서 넣으면 다시 필요한 값만 들어가게 되네요 !
이거 찾으신거 대단한것 같아요...
현재 저희가 사용하고 있는 값들이 email, displayName, photoURL등이 두군데 모두 들어있어서 에러는 안나지만 ....
몰랑님이 말씀해주신것처럼 바꿔주는게 좋을것같습니다 !
아니면 처음 유저 정보를 리덕스 스토어에 넣을때
setUser에서 이렇게 넣어줘도 될 것 같습니다 !!!
너무나 좋은 정보 올려주셔서 감사합니다.!
답변 1