inflearn logo
강의

講義

知識共有

作成しながら学ぶフロントエンドDO ITコーディング(Next.js、Typescript)

React.js contextを活用したAuth処理

렌더마다 변경되는 값이라서 context Provider에 못 넣는 에러

236

xxiiuu

投稿した質問数 5

0

선생님 강의 5:10 쯤에 temp obj를 provider value에 넣으려고 할 때, "매번 변경되는 값이라서 들어가지 않으니 hook으로 빼주면 된다고" 하셨는데요-!
처음엔 그냥 따라쳤는데 복습하다 보니까 왜 custom hook으로 빼주면 괜찮은지 궁금해요.
에러 메시지가 제안하는 대로 useMemo를 쓰지 않는 건 함수가 async 라서 그런 건가요.

Next.js

回答 1

1

totuworld

안녕하세요 츄츄님.

우선 context provider 에 tempObj 를 넣는게 문제가 되죠.

이건 아래 예시처럼 매번 새로운 값을 넣기 때문에 문제가 되는거에요.

 <MyContext.Provider value={{something: 'something'}}>

 

왜 문제가 되냐면 매번 새로운 값을 만들어서 넣기때문에 Provider 가 렌더링 될때마다 하위에서 구독중인 컴포넌트가 모두 리렌더링됩니다.

이 문제를 방지하려면 위쪽에서 useMemo 등으로 value가 항상 새로 생성되지 않는 처리를 해도 됩니다.

 

강의에서 이 부분을 모두 custom hook 으로 빼준건 전달해야하는 값이 여러개이고, useState와 useEffect를 활용해서 값 변경이 일어날 때 자동으로 state를 변경하는 일이 발생하기 때문입니다.

이 코드가 provider 가 있으면 다른 일을 하는 두 코드가 같이 있게 됩니다. 이게 싫어서 분리한거에요.

(한 곳에 몰아 넣어도 문제되지 않습니다)

강의 소제목

0

461

1

배포 관련 질문

0

647

1

Error: Illegal url for new iframe

0

762

1

빌드 오류(babel-eslint -> @babel/eslint-parser)

0

1177

2

강의 관련 질문입니다!

0

376

1

useState의 set 함수에 대해서 질문이 있습니다.

0

478

1

아직 못 들었는데 듣기 시작한 날부터 수강기한 시작할 수 없을까요?

0

343

1

사용하시는 zsh 테마가 뭐예요?

0

462

2

1월 21일까지 수강기간인데

0

366

1

Module not found: Can't resolve 'fs' 오류

0

2141

1

publicRunTimeConfig error

0

339

1

강의 수강일 문의 드립니다.

0

305

2

https://bit.ly/broken-link 관련 CORS 오류해결

0

304

1

useToast 에러

0

591

1

문의 드립니다😭

0

227

1

빌드시 오류

0

305

1

vercel 배포 후 list의 uid가 넘어가지 않아 문의 드립니다!

1

542

1

CORS 오류로 인한 문의 드립니다

0

311

1

LOCAL_CHROME_PATH 경로에 파일이 없어요!

0

357

1

public runtime config 에러 공유

0

345

1

컴포넌트 파일명에 underscore

0

313

1

firebase admin 코드 추가 강의 부분

7

442

2

구글 로그인 apikey error

0

366

3

firebase/auth import 안됨

0

288

1