• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    해결됨

분해구조 할당자에 이상한 값이 들어오네요

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 }

요렇게 출력했을 때 두 값이 다르게 출력되었습니다.

답변 1

답변을 작성해보세요.

3

안녕하세요 !!! 

얘기해주신걸 보고 저도 한번 해봤는데 정말그렇게 되네요 ... 

처음에 

App.js 에서     

firebase.auth().onAuthStateChanged(user => {
 

user로 받아온 값이 리덕스 스토어에 들어갈때는 필요한 정보만 들어가는데 
그걸 ...state.currentUser로 다시 넣을때는   모든 값이 들어가게 되네요 ...
그리고 말씀해주신것처럼 stringfy 와 parse를 해서 넣으면 다시 필요한 값만 들어가게 되네요 ! 
이거 찾으신거 대단한것 같아요...
현재 저희가 사용하고 있는 값들이 email, displayName, photoURL등이 두군데 모두 들어있어서 에러는 안나지만 .... 
몰랑님이 말씀해주신것처럼 바꿔주는게 좋을것같습니다 ! 
아니면 처음 유저 정보를 리덕스 스토어에 넣을때 

export function setUser(user) {

return {
type: SET_USER,
payload: JSON.parse(JSON.stringify(user))
}
}

setUser에서 이렇게 넣어줘도 될 것 같습니다 !!! 
너무나 좋은 정보 올려주셔서 감사합니다.!