inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

따라하며 배우는 리액트, 파이어베이스 - 채팅 어플리케이션 만들기[2023.12 리뉴얼]

프로필 이미지 수정(3) 리덕스 스토어 데이터 변경 및 데이터베이스에 데이터 저장

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

해결된 질문

199

몰랑몰랑

작성한 질문수 16

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 }

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

firebase react 웹앱

답변 1

3

John Ahn

안녕하세요 !!! 

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

처음에 

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에서 이렇게 넣어줘도 될 것 같습니다 !!! 
너무나 좋은 정보 올려주셔서 감사합니다.!

ESlint

0

145

1

현 강의자료는 이해는 했는데, 그럼 전 강의자료는 이젠 활용을 못하나요?

0

108

0

배포 후 빈페이지

0

157

1

notification 관련 질문에 AI가 엉뚱하게 대답하여 다시 질문합니다.

0

148

1

notification 관련 부분은 예전 강의를 들어야 하나요?

0

147

1

npm run build시 오류가 있습니다.

0

235

1

이미지 업로드시 403에러가 발생하는데 해결법이 있을까요?

0

813

1

이건 어디에 저장이 되는 것인가요?? redux에 저장이 되는 것인가요??

0

265

1

eslint 질문 있습니다.

0

242

1

npm create react app

0

318

2

[리덕스 미들웨어]강의 중에 createStore에서 막혔습니다.

0

542

3

회원가입 유효성 부분 페이지 안뜨는 이유 좀요....

0

287

1

강의 pdf 파일

0

442

2

파이어베이스 파일 삭제, 사진 업로드 기능 오류

0

338

1

firebase 초기화 오류

0

604

1

mime-types 패키지를 import 할 때 에러 발생

0

285

1

리덕스 스토어에 로그인 유저 정보가 저장이 되지 않는 문제

0

345

1

강의 리뉴얼 일정을 알 수 있을까요?

0

375

1

완성본으로 제공된 코드를 구동시켜보려면

2

413

1

DB와 강의 리뉴얼

0

510

1

next.js 환경에서 이 수업을 들을 수 있나요?

0

398

1

Cannot read properties of undefined (reading 'isLoading') 오류 해결법 혹시 알 수 있을까요...

0

519

1

addChatRoom 함수 작성시

0

283

1

강의 도표 자료 다운을 받으면, zip파일에 아무것도 들어있지않다고 나옵니다.

0

251

1