도큐사우루스 클라이언트 API
도큐사우루스는 사이트를 만들 때 도움이 될 만한 API를 클라이언트에서 사용할 수 있게 제공합니다.
컴포넌트
<ErrorBoundary />
이 컴포넌트는 리액트 에러 경계를 만듭니다.
이를 사용해 컴포넌트를 래핑하고 에러가 발생했을 때 전체 앱 오류로 처리하는 대신 대체할 수 있는 UI를 보여줄 수 있습니다.
import React from 'react';
import ErrorBoundary from '@docusaurus/ErrorBoundary';
const SafeComponent = () => (
<ErrorBoundary
fallback={({error, tryAgain}) => (
<div>
<p>This component crashed because of error: {error.message}.</p>
<button onClick={tryAgain}>Try Again!</button>
</div>
)}>
<SomeDangerousComponentThatMayThrow />
</ErrorBoundary>
);
동작을 확인하려면 클릭해보세요.
도큐사우루스는 해당 컴포넌트를 사용해 테마 레이아웃과 전체 앱에서 발생하는 오류를 처리할 수 있습니다.
해당 컴포넌트는 빌드 시 오류는 처리하지 않으며 안정된 리액트 컴포넌트 사용 시 발생할 수 있는 클라이언트 측 렌더링 오류에 대해서만 처리합니다.
속성
fallback
: JSX 요소를 반환하는 렌더 콜백 옵션입니다. 두 개의 속성을 가진 오브젝트를 받을 수 있습니다.error
는 처리할 에러 그리고tryAgain
는 컴포넌트 내에서 에러를 초기화하고 다시 렌더링하기 위한 콜백 함수(() => void
)입니다. 반환되는 것이 없다면@theme/Error
에서 대신 렌더링합니다.@theme/Error
는 레이아웃 위에서 사이트를 래핑하는 에러 경계(Error Boundaries)로 사용됩니다.
fallback
속성은 콜백이며 리액트 기능 컴포넌트가 아닙니다. 콜백 내에서 리액트 후크를 사용할 수 없습니다.
<Head/>
재사용할 수 있는 리액트 컴포넌 트로 문서 헤더 영역의 수정을 관리할 수 있습니다. 일반적인 HTML 태그를 사용하며 실제 출력 결과도 일반적인 HTML 태그입니다. 초보자들에게 적합합니다. 리액트 헬멧(React Helmet) 래퍼 컴포넌트입니다.
아래와 같이 작성합니다.
import React from 'react';
import Head from '@docusaurus/Head';
const MySEO = () => (
<Head>
<meta property="og:description" content="My custom description" />
<meta charSet="utf-8" />
<title>My Title</title>
<link rel="canonical" href="http://mysite.com/example" />
</Head>
);
중첩되거나 나중에 정의된 컴포넌트는 이전 값을 덮어씁니다.
<Parent>
<Head>
<title>My Title</title>
<meta name="description" content="Helmet application" />
</Head>
<Child>
<Head>
<title>Nested Title</title>
<meta name="description" content="Nested component" />
</Head>
</Child>
</Parent>
출력 결과는 아래와 같습니다.
<head>
<title>Nested Title</title>
<meta name="description" content="Nested component" />
</head>
<Link/>
내부 페이지에 연결하거나 미리 콘텐츠를 불러와서(preloading) 성능을 최적화할 수 있는 기능을 사용할 수 있습니다. 사전 로딩(preloading)은 사용자가 컴포넌트를 사용하는 시점에 필요한 리소스를 미리 가져오는 방식입니다. <Link>
가 viewport 내에 있을 때 낮은 우선순위의 요청을 처리하기 위해 IntersectionObserver
를 사용합니다. 그리고 사용자가 높은 우선순위의 리소스를 요청하려고 할 때는 onMouseOver
이벤트를 발생시킵니다.
리액트 라우터의 <Link>