본문으로 건너뛰기
버전: 11.x

로컬 링크

localLink는 HTTP를 거치지 않고 애플리케이션에서 tRPC 프로시저를 직접 호출할 수 있도록 하는 종단 링크입니다.

정보

새로운 API이므로 unstable_ 접두사가 붙어 있지만, 안심하고 사용하셔도 됩니다! 자세히 보기.

사용법

tsx
import { createTRPCClient, unstable_localLink } from '@trpc/client';
import type { AppRouter } from './server';
import { appRouter } from './server';
 
const client = createTRPCClient<AppRouter>({
links: [
unstable_localLink({
router: appRouter,
createContext: async () => {
// Create your context here
return {};
},
onError: (opts) => {
// Log errors here, similarly to how you would in an API route
console.error('Error:', opts.error);
},
}),
],
});
tsx
import { createTRPCClient, unstable_localLink } from '@trpc/client';
import type { AppRouter } from './server';
import { appRouter } from './server';
 
const client = createTRPCClient<AppRouter>({
links: [
unstable_localLink({
router: appRouter,
createContext: async () => {
// Create your context here
return {};
},
onError: (opts) => {
// Log errors here, similarly to how you would in an API route
console.error('Error:', opts.error);
},
}),
],
});

기능

  • HTTP 오버헤드 없이 프로시저 직접 호출
  • 쿼리, 뮤테이션, 구독에 대한 완전한 지원
  • 오류 처리 및 변환 자동화
  • 중단 신호(abort signal) 지원
  • 타입 안전한 컨텍스트 생성

옵션

localLink는 다음 옵션을 받습니다:

ts
type LocalLinkOptions<TRouter extends AnyRouter> = {
router: TRouter;
createContext: () => Promise<inferRouterContext<TRouter>>;
onError?: (opts: ErrorHandlerOptions<inferRouterContext<TRouter>>) => void;
} & TransformerOptions<inferClientTypes<TRouter>>;
ts
type LocalLinkOptions<TRouter extends AnyRouter> = {
router: TRouter;
createContext: () => Promise<inferRouterContext<TRouter>>;
onError?: (opts: ErrorHandlerOptions<inferRouterContext<TRouter>>) => void;
} & TransformerOptions<inferClientTypes<TRouter>>;

라우터

프로시저 호출에 사용할 tRPC 라우터 인스턴스입니다.

createContext

각 프로시저 호출에 대한 컨텍스트를 생성하는 함수입니다. 이 함수는 각 요청마다 호출되며 컨텍스트 객체를 반환하는 프로미스를 반환해야 합니다.

onError

프로시저 호출 중 오류가 발생하면 호출되는 선택적 오류 핸들러입니다. 오류, 작업 유형, 경로, 입력, 컨텍스트를 인자로 받습니다.

트랜스포머

데이터 직렬화/역직렬화를 위한 선택적 입력/출력 트랜스포머입니다.

참고

  • HTTP 없이 프로시저를 직접 호출해야 하는 시나리오에서 이 링크를 사용하는 것이 권장됩니다
  • 대부분의 클라이언트 측 애플리케이션에서는 httpLink 또는 다른 HTTP 기반 링크를 사용하는 것이 좋습니다
  • 이 링크는 쿼리, 뮤테이션, 구독을 포함한 모든 tRPC 기능을 지원합니다
  • 오류 처리 및 변환은 HTTP 기반 링크와 마찬가지로 자동으로 처리됩니다