~/hovelopin
Suspensive · 목차

chapter 02 / 12

@suspensive/react: 코어 프리미티브

Suspense: SSR까지 고려한 래퍼

@suspensive/reactSuspense는 React의 Suspense를 감싸면서 clientOnly 옵션을 더한다. 서버에서는 fallback만 그리고, 클라이언트에서 실제 내용을 렌더해 하이드레이션 불일치를 피한다.

import { Suspense } from "@suspensive/react";
 
<Suspense clientOnly fallback={<Skeleton />}>
  <Chart />
</Suspense>;

Delay: 순간 깜빡임 방지

로딩이 아주 빠르면 스피너가 번쩍이고 사라져 오히려 거슬린다. Delay는 지정한 시간이 지나야 children을 보여준다.

<Suspense fallback={<Delay ms={200}><Spinner /></Delay>}>
  <List />
</Suspense>

ErrorBoundary와 ClientOnly

ErrorBoundaryfallback에 에러와 reset을 넘겨주는 렌더 프롭을 받고, ClientOnly는 브라우저에서만 렌더해야 하는 영역을 감싼다.

<ErrorBoundary
  fallback={({ error, reset }) => (
    <button onClick={reset}>다시 시도 ({error.message})</button>
  )}
>
  <Widget />
</ErrorBoundary>