Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[서준환] 10장: 리액트 17과 18의 변경 사항 살펴보기 #76

Merged
merged 1 commit into from
Feb 22, 2024

Conversation

Seojunhwan
Copy link
Member

요것도 한번 더 읽어봐야 할 것 같네요,,!

요거 한번 본 후 공식문서 보니까 공식문서는 5배 더 자세하게 설명해 주더라구요,, 요것도 한번 진득허니 보겠슴니다

Copy link
Contributor

@Dongkyuuuu Dongkyuuuu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수고하셨어용!! 👍👍👍👍👍👍


> 그렇다면 custom hooks 를 모두 이렇게 만들어 주어야 하는 것인가요?
>
> 더불어 custom hook 라이브러리의 경우 특정 react 버전에 따라 내부 구현을 변경하여 제공할 수 있을까요?
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

useSyncExternalStore훅이 아닌 마이너 버전의 훅 useSubscription을 사용해서 라이브러리를 구현하거나, useSyncExternalStore을 사용한다면 peerDenpdenceis로 react18버전을 명시해줘야할 것 같다고 생각이 듭니다!!

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

그러게요 사용자 버전 별로 다른 코드를 서빙한다라 .... 🤔


리액트 18에서부터 렌더링을 일시 중지, 뒤로 미루는 등의 최적화가 가능하며 외부 상태간의 동기화 문제가 발생한다. 이를 해결하기 위해 도입된 훅이다.

> 그렇다면 custom hooks 를 모두 이렇게 만들어 주어야 하는 것인가요?
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"외부 데이터 소스�" 라는 포인트가 중요한 것 같아요! useState useReducer이 아닌 것들이다보니 React 자체 상태관리에서 떨어져 있는 것들을 말하는 것 같아요.

근데 개인적으로는 테어링 현상을 경험해보지 못해 잘 모르겠네요...


리액트 18부터는 `ReactDOM.createRoot`를 통해 렌더링을 할 수 있다.

> 제가 알기론 concurrent mode를 사용하기 위해서는 `createRoot`를 사용해야 한다고 알고 있슴니다 . .
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍👍👍


잠재적인 버그를 미리 찾아내기 위해 리액트의 엄격 모드를 사용할 수 있다.

무 적 권 켜놓으십쇼.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ㅋㅋㅋㅋㅋㅋㅋ 별표!


더불어 서버에서 사용할 수 없었다. 그렇기에 커스텀한 컴포넌트를 만들어 SSR 환경에서도 지원하게끔 만들어야 했다.

> Suspense에 스로틀링이 추가됐다는데, 정확하게 무슨 의미?,,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suspense의 Fallback이 노출되있는 상태에서 다시 Susepnse가 실행되는 상황이 있다면 무시한다라는 뜻으로 이해 했어요!

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

저도 동규님 말씀 같이 이해했어요!!

Copy link
Member

@hyesungoh hyesungoh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다 👍 👍 👍 👍 👍 👍

Comment on lines +77 to +80
> 알고리즘 봐도 이해가 안 가던데 , ,
> help me

> 참고로 [useId](https://react-spectrum.adobe.com/react-aria/useId.html)는 adobe에서 만든 라이브러리인데 얘네는 provider를 통해 ssr에서 생성한 id를 공유하는 것 같네요!
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

저는 알고리즘을 따로 본 건 아닌데요 ...
그냥 트리 위치 기반으로 아이디를 생성하는구나 ... 하고 넘겼습니다 ㅋㅋㅋㅋ


> 그렇다면 custom hooks 를 모두 이렇게 만들어 주어야 하는 것인가요?
>
> 더불어 custom hook 라이브러리의 경우 특정 react 버전에 따라 내부 구현을 변경하여 제공할 수 있을까요?
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

그러게요 사용자 버전 별로 다른 코드를 서빙한다라 .... 🤔


더불어 서버에서 사용할 수 없었다. 그렇기에 커스텀한 컴포넌트를 만들어 SSR 환경에서도 지원하게끔 만들어야 했다.

> Suspense에 스로틀링이 추가됐다는데, 정확하게 무슨 의미?,,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

저도 동규님 말씀 같이 이해했어요!!

@hyesungoh hyesungoh merged commit 70eb195 into main Feb 22, 2024
1 check passed
@hyesungoh hyesungoh deleted the 10장/서준환 branch February 22, 2024 09:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants