반응형
const keywordEnrollOption: radio[] = [
{ value: Code.A, id: 'auto_enroll', label: '자동등록' },
{ value: Code.M, id: 'manual_enroll', label: '수동등록' },
];
export interface radio {
value: string;
id: string;
label: string;
}
const RadioGroups = ({
onValueChange,
radios,
}: {
onValueChange: RadioGroupContextValue['onValueChange'];
radios: radio[];
}) => {
return (
<>
<RadioGroup
defaultValue={radios[0].value}
className="flex"
onValueChange={(value) => onValueChange(value)}
>
{radios.map((item) => (
<div key={item.id} className="flex items-center space-x-2">
<RadioGroupItem value={item.value} id={item.id} />
<Label htmlFor={item.id}>{item.label}</Label>
</div>
))}
</RadioGroup>
</>
);
};
/** 컴포넌트 사용 **/
const dispatch = useAppDispatch();
const setKeywordStrategy = (value: string) => {
dispatch(groupInfoSlice.actions.setKeywordStrategy(value));
};
<RadioGroups
onValueChange={setKeywordStrategy}
radios={keywordEnrollOption}
/>
RadioGroup 컴포넌트의 경우 https://ui.shadcn.com/에서 가져온 거라 그 부분은 본인이 만든 라디오 컴포넌트에 맞게 만드시면 됩니다
리덕스로 상태관리를 했으며 useState로 관리하는 것도 컴포넌트 사용에서 넘겨주는 Setter를 변경해서 넘겨주면 됩니다
반응형
'[React] > [React Code]' 카테고리의 다른 글
[React Code] 다중 체크박스(checkbox) 구현 (상태 관리 [전역 Redux / 지역]) → 배열로 상태관리 (0) | 2024.02.07 |
---|---|
[React Code] React Query V5 무한 스크롤 구현하기 (0) | 2024.01.16 |
[React Code] 다중 버튼중 단일 선택 기능 (4) | 2023.11.22 |