@modern-kit/react
Version:
30 lines (27 loc) • 1.22 kB
TypeScript
import React__default from 'react';
interface SwitchCaseProps<Case extends PropertyKey> {
value: Case | null | undefined;
caseBy: Record<Case, React__default.ReactNode>;
defaultComponent?: React__default.ReactNode;
}
/**
* @description value 값에 따라 다른 컴포넌트를 `Switch` 형태로 조건부 렌더링하는 컴포넌트입니다.
*
* @param {SwitchCaseProps<Case>} props - `SwitchCase` 컴포넌트의 속성
* @param {Case | null | undefined} props.value - 렌더링할 케이스를 결정하는 값
* @param {Record<Case, React.ReactNode>} props.caseBy - `value` 값에 대응하는 컴포넌트들을 담은 객체
* @param {React.ReactNode} props.defaultComponent - `value`가 `null`이거나 `caseBy`에 해당하는 컴포넌트가 없을 때 렌더링할 기본 컴포넌트
*
* @returns {JSX.Element} - 조건부로 렌더링된 컴포넌트
*
* @example
* ```tsx
* <SwitchCase
* value={status}
* caseBy={{ success: <SuccessView />, error: <ErrorView /> }}
* defaultComponent={<DefaultView />}
* />
* ```
*/
declare const SwitchCase: <Case extends PropertyKey>({ caseBy, value, defaultComponent, }: SwitchCaseProps<Case>) => JSX.Element;
export { SwitchCase };