Рабочий пример с переключением действий открытия и закрытия подменю
Чтобы добавить несколько подменю в меню с помощью Ionic, нам нужно создать функцию для события onClick элемента IonItemDivider и соответствующим образом установить состояние.
interface HideSubMenu { [key: string]: boolean; } const FindEventsMenu: React.FC = () => { const [subMenu, setSubMenu] = useState<HideSubMenu>({}); function toggleSubMenu(sport: string) { setSubMenu((value) => { return { ...value, [sport]: !value[sport] }; }); } return ( <IonMenu menuId="find-events-menu" side="start" contentId="main-content"> <IonHeader> <IonToolbar color="tertiary"> <IonTitle>Find Events</IonTitle> </IonToolbar> </IonHeader> <IonContent className="ion-no-padding"> <IonItemGroup> <IonItemDivider onClick={() => toggleSubMenu('Volleyball')}> <IonLabel>Volleyball</IonLabel> <IonIcon slot="end" color="medium" ios={chevronDownOutline} md={chevronDownSharp} /> </IonItemDivider> <IonMenuToggle hidden={subMenu['Volleyball']} autoHide={false}> <IonItem lines="full" detail={true}> <IonIcon slot="start" ios={peopleCircleOutline} md={peopleCircleSharp} /> <IonLabel>Pick-ups</IonLabel> </IonItem> </IonMenuToggle> <IonMenuToggle hidden={subMenu['Volleyball']} autoHide={false}> <IonItem lines="full" detail={true}> <IonIcon slot="start" ios={trophyOutline} md={trophySharp} /> <IonLabel>Leagues</IonLabel> </IonItem> </IonMenuToggle> <IonMenuToggle hidden={subMenu['Volleyball']} autoHide={false}> <IonItem lines="full" detail={true}> <IonIcon slot="start" ios={medalOutline} md={medalSharp} /> <IonLabel>Tournaments</IonLabel> </IonItem> </IonMenuToggle> <IonMenuToggle hidden={subMenu['Volleyball']} autoHide={false}> <IonItem lines="full" detail={true}> <IonIcon slot="start" ios={fitnessOutline} md={fitnessSharp} /> <IonLabel>Clinics</IonLabel> </IonItem> </IonMenuToggle> <IonItemDivider onClick={() => toggleSubMenu('Football')}> <IonLabel>Football</IonLabel> <IonIcon slot="end" color="medium" ios={chevronDownOutline} md={chevronDownSharp} /> </IonItemDivider> <IonMenuToggle hidden={subMenu['Football']} autoHide={false}> <IonItem lines="full" detail={true}> <IonIcon slot="start" ios={peopleCircleOutline} md={peopleCircleSharp} /> <IonLabel>Pick-ups</IonLabel> </IonItem> </IonMenuToggle> <IonMenuToggle hidden={subMenu['Football']} autoHide={false}> <IonItem lines="full" detail={true}> <IonIcon slot="start" ios={trophyOutline} md={trophySharp} /> <IonLabel>Leagues</IonLabel> </IonItem> </IonMenuToggle> <IonMenuToggle hidden={subMenu['Football']} autoHide={false}> <IonItem lines="full" detail={true}> <IonIcon slot="start" ios={medalOutline} md={medalSharp} /> <IonLabel>Tournaments</IonLabel> </IonItem> </IonMenuToggle> <IonMenuToggle hidden={subMenu['Football']} autoHide={false}> <IonItem lines="full" detail={true}> <IonIcon slot="start" ios={fitnessOutline} md={fitnessSharp} /> <IonLabel>Clinics</IonLabel> </IonItem> </IonMenuToggle> <IonItemDivider> <IonLabel>Events</IonLabel> </IonItemDivider> <IonMenuToggle autoHide={false}> <IonItem lines="full" detail={true}> <IonIcon slot="start" ios={balloonOutline} md={balloonSharp} /> <IonLabel>Parties</IonLabel> </IonItem> </IonMenuToggle> </IonItemGroup> </IonContent> </IonMenu> ); };