I am having difficulties to implement Ionic 4 hamburger menu. I put my menu in separate component, like this:
import React from "react";
import {
IonMenu,
IonHeader,
IonToolbar,
IonTitle,
IonContent,
IonList,
IonItem,
IonButtons,
IonMenuButton,
IonIcon,
} from "@ionic/react";
import { menuController } from "@ionic/core";
import { menuOutline } from "ionicons/icons";
const Menu: React.FC = () =>
{
const onClickHandler = (): void =>
{
menuController.open();
};
return (
<React.Fragment>
<IonMenu side="start" menuId="first" content-id="main">
<IonHeader translucent>
<IonToolbar color="primary">
<IonTitle>
<IonIcon slot="start" icon={menuOutline}></IonIcon>
</IonTitle>
<IonButtons slot="start">
<IonMenuButton autoHide={false}
onClick={() => onClickHandler()}>
</IonMenuButton>
</IonButtons>
</IonToolbar>
</IonHeader>
<IonContent>
<IonList>
<IonItem>Menu Item</IonItem>
<IonItem>Menu Item</IonItem>
<IonItem>Menu Item</IonItem>
<IonItem>Menu Item</IonItem>
<IonItem>Menu Item</IonItem>
</IonList>
</IonContent>
</IonMenu>
</React.Fragment>
);
};
export default Menu;
Then I tried to use it in my App.tsx
i
mport React from "react";
import { Redirect, Route } from "react-router-dom";
import { IonApp, IonRouterOutlet } from "@ionic/react";
import { IonReactRouter } from "@ionic/react-router";
import Home from "./pages/home/home";
import { ProtectedRoute } from "./security/protectedRoute";
import AdminHome from "./pages/admin/adminHome";
import Menu from "./pages/shared/menu/menu";
/* Core CSS required for Ionic components to work properly */
import "@ionic/react/css/core.css";
/* Basic CSS for apps built with Ionic */
import "@ionic/react/css/normalize.css";
import "@ionic/react/css/structure.css";
import "@ionic/react/css/typography.css";
/* Optional CSS utils that can be commented out */
import "@ionic/react/css/padding.css";
import "@ionic/react/css/float-elements.css";
import "@ionic/react/css/text-alignment.css";
import "@ionic/react/css/text-transformation.css";
import "@ionic/react/css/flex-utils.css";
import "@ionic/react/css/display.css";
/* Theme variables */
import "./theme/variables.css";
const App: React.FC = () => (
<IonApp>
<Menu />
<IonReactRouter>
<IonRouterOutlet>
<Route path="/home" component={Home} exact={true} />
<Route exact path="/" render={() => <Redirect to="/home" />} />
<ProtectedRoute path="/admin" component={AdminHome} />
</IonRouterOutlet>
</IonReactRouter>
</IonApp>
);
export default App;
I also tried to put in the header component, in the home page content section, bu it never appears.