react Обощенный тип generic -- Пример для функционального компонента, коллбэк
Primary tabs
Пример:
import React from 'react'; export interface ConfigAccordionProps<T> { name: string; setPanelOpen: (panelName: T, isOpen: boolean) => void; } const createItemName = (name: string, index: number) => `${name}-${index}`; export function ConfigAccordion<T>({ name, setPanelOpen }: ConfigAccordionProps<T>) { const { t } = useTranslation(); // колбэк использует обобщенный тип const handleChange = (name: T) => (_event: React.ChangeEvent<{}>, isExpanded: boolean) => { setPanelOpen(name, isExpanded); }; return ( <> {configs.map(({ id, title, content }, index) => { const itemName = createItemName(name, index); const isExpanded = openedPanelsNames.includes(id); return ( <AccordionItem id={id} name={itemName} title={t(title)} onChange={handleChange(id as unknown as T)} expanded={isExpanded} key={index} > {content} </AccordionItem> ); })} </> ); }
- Log in to post comments
- 609 reads