useParams
useParams
는 지정된 라우트에서 파라미터를 가져오는 훅이에요. 이 훅을 사용하면 현재 라우트의 파라미터에 쉽게 접근할 수 있어요. validateParams
옵션을 사용하면 파라미터 구조를 검증하고 타입을 변환할 수 있어서 런타임 에러를 줄이고 안전한 코드를 작성할 수 있어요.
시그니처
typescript
function useParams<TScreen extends keyof RegisterScreen>(options: {
from: TScreen;
strict?: true;
}): RegisterScreen[TScreen];
파라미터
- options필수 · GraniteRouteHooksOptions<TScreen>
가져올 라우트의 정보를 담은 객체예요.
- options.fromstring
파라미터를 가져올 라우트 경로예요. 이 값을 지정하지 않으면 현재 라우트에서 파라미터를 가져와요. 엄격 모드(
strict
)가true
인 경우 반드시 지정해야 해요. - options.strictboolean
엄격 모드 설정이에요.
true
로 설정하면 지정된 라우트와 현재 라우트가 일치하지 않으면 에러를 발생시켜요.false
로 설정하면validateParams
검증을 생략하고 현재 화면의 파라미터를 그대로 반환해요.
- options.fromstring
예제
라우트 파라미터 가져오기
tsx
import React from 'react';
import { Text } from 'react-native';
import { createRoute, useParams } from '@granite-js/react-native';
export const Route = createRoute('/examples/use-params', {
validateParams: (params) => params as { id: string },
component: UseParamsExample,
});
function UseParamsExample() {
// 첫 번째 방법: 라우트 객체의 `useParams` 메서드 사용
const params = Route.useParams();
// 두 번째 방법: useParams 훅 직접 사용
const params2 = useParams({ from: '/examples/use-params' });
// 세 번째 방법: strict 모드를 false로 설정하여 사용
// strict: false로 설정하면 현재 라우트의 파라미터를 가져오며,
// validateParams가 정의되어 있어도 검증을 건너뛰어요.
const params3 = useParams({ strict: false }) as { id: string };
return (
<>
<Text>{params.id}</Text>
<Text>{params2.id}</Text>
<Text>{params3.id}</Text>
</>
);
}