Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

@osdk/react로 온톨로지 데이터 사용

@osdk/react는 온톨로지 SDK와 React 컴포넌트의 수명주기를 연결합니다. 타입이 있는 훅과 공유 캐시를 사용하므로 각 컴포넌트가 요청과 로딩 상태를 따로 구현할 필요를 줄일 수 있습니다. OSDK를 사용하는 React 앱에서는 이 라이브러리를 권장합니다.

제공 기능

  • 객체, 객체 집합, 링크와 집계를 조회합니다.
  • 액션을 검증하고 적용하며 낙관적 갱신을 지원합니다.
  • 온톨로지 함수를 호출하고 의존 관계를 추적합니다.
  • 정규화한 객체 캐시를 컴포넌트 사이에 공유합니다.
  • 액션 뒤 영향을 받은 캐시의 객체를 동기화합니다.

설치와 클라이언트

아래 예제는 @osdk/api, @osdk/client, @osdk/react 2.83.0을 사용합니다. 기존 React 프로젝트의 의존성에 추가하며, 개발 도구가 이미 같은 호환 버전을 설치했다면 중복 설치하지 않습니다.

npm install @osdk/api@2.83.0 @osdk/client@2.83.0 @osdk/react@2.83.0

Developer Console의 SDK versions에서 필요한 객체와 액션을 포함한 npm SDK를 생성하고, 생성된 패키지를 프로젝트에 설치합니다. @my/osdk는 아래 예제에서 사용하는 패키지 이름이며 실제 생성한 SDK의 이름으로 바꿉니다.

OsdkProvider에는 인증과 온톨로지 설정을 마친 OSDK Client를 전달합니다. 앱 개발 환경이 생성한 클라이언트를 사용하거나 TypeScript 앱 설정에 따라 준비합니다. 클라이언트는 렌더마다 새로 만들지 않고 같은 인스턴스를 전달합니다. 모든 OSDK 훅을 사용하는 컴포넌트는 이 Provider 안에 있어야 합니다.

미완료 작업 조회

예제의 Todo에는 title, isComplete, createdAt 속성이 있어야 합니다. isComplete가 false인 작업을 생성 시각 내림차순으로 읽습니다. 파일은 JSX를 포함하므로 .tsx로 저장합니다.

import type { Client } from "@osdk/client";
import { OsdkProvider, useOsdkObjects } from "@osdk/react";
import { Todo } from "@my/osdk";

function TodoList() {
  const { data, error, isLoading } = useOsdkObjects(Todo, {
    orderBy: { createdAt: "desc" },
    where: { isComplete: false },
  });

  if (data == null && isLoading) {
    return <div>Loading...</div>;
  }
  if (error) {
    return <div role="alert">Error: {error.message}</div>;
  }
  if (data == null || data.length === 0) {
    return <div>No todos found</div>;
  }
  return (
    <div>
      {data.map(todo => <div key={todo.$primaryKey}>{todo.title}</div>)}
    </div>
  );
}

export function TodoApplication({ client }: { client: Client }) {
  return (
    <OsdkProvider client={client}>
      <TodoList />
    </OsdkProvider>
  );
}

이 예제는 첫 페이지를 표시합니다. useOsdkObjects의 autoFetchMore를 생략하면 첫 페이지만 읽으며, 추가 페이지는 반환된 fetchMore로 요청합니다. fetchMore가 undefined이면 더 읽을 페이지가 없습니다. data는 로드 전에는 undefined일 수 있고, 조회 실패는 error로 전달합니다.

설정 오류

2.83.0의 공개 OsdkProvider에서 필수인 props는 client와 children입니다. store를 요구하는 타입 오류가 나타나면 다른 버전이나 진입점의 Provider 선언을 참조하는지, @osdk/client와 @osdk/react의 버전이 호환되는지 확인합니다. Provider가 없거나 훅을 사용하는 컴포넌트보다 아래에 있으면 해당 컴포넌트는 클라이언트를 읽을 수 없습니다.

조건에 따라 조회를 중지하려면 훅 호출 자체를 조건문으로 감싸지 않고 enabled 옵션을 사용합니다. enabled: false에서는 새 서버 조회를 자동으로 실행하지 않지만 기존 캐시 데이터는 반환할 수 있습니다.

추가 설치 옵션과 훅 사용 예는 OSDK React 시작 안내에서 확인할 수 있습니다.