리액트 컴포넌트 props를 제너릭으로 선언해서 사용해도 될까요?

조회 108

profile picture

익명

3월 6일

혹시 컴포넌트에 제네릭 넘기신적 있으신분 계신가요? 예를 들면 A라는 컴포넌트가 OrderA OrderB라는 Order에서 파생된 두가지 타입을 받는 경우요!

구체적이고 정성스러운 질문에 Up 투표를 눌러주세요.

설명이 부족한 질문에 Down 투표를 눌러주세요. 커리어리가 질문자에게 수정을 요청할게요.

답변 1

성원님의 프로필 사진

안녕하세요:) 제네릭으로 많이 사용합니다. 특히 UI 컴포넌트와 같은 공통 컴포넌트에서 자주 정의합니다. 예를들어 Select 컴포넌트가 있을 때, Select의 option값에 어떤 타입이 올지 모르는 경우 제네릭으로 정의 한 뒤 사용하는 쪽에서 타입을 넣어줍니다. 예시 코드 import React, { useState } from "react"; interface SelectProps<T> { options: T[]; value?: T; onChange: (value: T) => void; } function Select<T extends { label: string; value: string }>({ options, value, onChange, }: SelectProps<T>) { const [isOpen, setIsOpen] = useState(false); function handleOptionClick(option: T) { onChange(option); setIsOpen(false); } return ( <div> <button onClick={() => setIsOpen(!isOpen)}> {value ? value.label : "Select an option"} </button> {isOpen && ( <ul> {options.map((option) => ( <li key={option.value} onClick={() => handleOptionClick(option)}> {option.label} </li> ))} </ul> )} </div> ); } export default Select;

profile picture

익명

작성자

3월 8일

답변 감사합니다!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직 개발자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직 개발자들의 명쾌한 답변을 얻을 수 있어요.