노마드 코더의 완전 새로운 리액트가 온다? 핵심정리 10분컷 을 보고 요약한 내용입니다.
v16~17 | code splitting with React.lazy(Client)
v18 | Data fetching via compatible libraries, like Relay.(Client)
Streaming server rendering(Server)
로딩 체크하는 로직이 컴포넌트 내부에 있음
function Profile(){
const {data: profile, isLoading } = useQuery("profile",fn);
if(isLoading){
return <Loader />;
}
return <dib>Hello {profile.name}! Welcome!</div>
}
로딩 상태를 컴포넌트와 분리, Suspense 를 사용하면 로딩 state 잊어도 됨. 로딩 상태를 컴포넌트와 분리
function Profile(){
const {data: profile} = useQuery("profile",fn);;
return <div>Hello {profile.name}! Welcome!</div>
}
Loading state가 컴포넌트 외부로 빠짐. 로딩 로직이 밖으로 빠짐으로써 컴포넌트 흐름 파악이 훨씬 간결해짐
<Suspense fallback={<Loader /}>
<Profile />
</Suspense>
서버에서 먼저 전체 어플리케이션을 렌더링하게 때문에 어느 한 컴포넌트가 로딩하는데 오래걸리면 백엔드에서 전체 렌더링하는 동안 유저는 빈화면을 볼 수 있음.
<App>
<Header />
<Posts />
</App>
<App>
<Header />
<Suspense fallback={<Loader />}>
<Posts />
</Suspense>
</App>
Suspense 덕분에 전체 애플리케이션을 한꺼번에 로드할 필요가 없음
아직 hydreate 안된 걸 유저가 선택하면 유저가 인터렉션하기 원하는 그 컴포넌트 hydrate 로딩을 먼저함