Hi guys,
I do have an Ionic project with Vite set up on it. Is it a regular way to work with Ionic + Vite ?
Because I have so interface issues and I don’t know if it can be related to Vite.
I don’t have an index.html inside /public but at the root of the project. And in the I have this :
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
Normally on Ionic there is the index.html in the /public folder and no “module” import inside script tags.
The main.tsx is at the same level as App.tsx and looks like this :
import React from 'react';
import { createRoot } from 'react-dom/client';
import App from './App';
const container = document.getElementById('root');
const root = createRoot(container!);
root.render(
<React.StrictMode>
<App />
</React.StrictMode>
);
I believe that it’s the way Vite works. But I don’t know if this “Vite integration” can cause the issues I’m experimenting in the app. It looks like Ionic is unable to load properly as usual and detecting for example de Home Indicator on iPhone.
The code in App.tsx looks like this which is a very regular way to work with tabs :
import {
IonApp,
IonIcon,
IonLabel,
IonRouterOutlet,
IonTabBar,
IonTabButton,
IonTabs,
setupIonicReact
} from '@ionic/react';
import { IonReactRouter } from '@ionic/react-router';
import { Route, Redirect } from 'react-router-dom'; // Import Redirect pour react-router-dom v5
import { airplaneSharp, personSharp, locationSharp, homeSharp } from 'ionicons/icons'; // Import des icônes appropriées
import Tab1 from './pages/Tab1';
import MapDisplay from './pages/MapCityDisplay';
import CitiesDisplay from './pages/CitiesDisplay';
/* 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';
/* 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';
import 'swiper/swiper-bundle.css';
/**
* Ionic Dark Mode
* -----------------------------------------------------
* For more info, please see:
* https://ionicframework.com/docs/theming/dark-mode
*/
/* import '@ionic/react/css/palettes/dark.always.css'; */
/* import '@ionic/react/css/palettes/dark.class.css'; */
import '@ionic/react/css/palettes/dark.system.css';
/* Theme variables */
import Test from './pages/Test';
import City from './pages/City';
setupIonicReact();
const App: React.FC = () => (
<IonApp>
<IonReactRouter>
<IonTabs>
<IonRouterOutlet>
<Route path="/feed">
<Tab1 />
</Route>
<Route path="/destinations">
<MapDisplay />
</Route>
<Route path="/trips">
<CitiesDisplay />
</Route>
<Route path="/account">
<Test />
</Route>
{/* Route pour les villes spécifiques */}
<Route path="/city/:slug">
<City />
</Route>
{/* Redirection par défaut */}
<Route exact path="/">
<Redirect to="/feed" />
</Route>
</IonRouterOutlet>
<IonTabBar slot="bottom">
<IonTabButton tab="feed" href="/feed">
<IonIcon aria-hidden="true" icon={homeSharp} />
<IonLabel>Feed</IonLabel>
</IonTabButton>
<IonTabButton tab="destinations" href="/destinations">
<IonIcon aria-hidden="true" icon={locationSharp} />
<IonLabel>Destinations</IonLabel>
</IonTabButton>
<IonTabButton tab="trips" href="/trips">
<IonIcon aria-hidden="true" icon={airplaneSharp} />
<IonLabel>Trips</IonLabel>
</IonTabButton>
{/* <IonTabButton tab="account" href="/account">
<IonIcon aria-hidden="true" icon={personSharp} />
<IonLabel>Account</IonLabel>
</IonTabButton> */}
</IonTabBar>
</IonTabs>
</IonReactRouter>
</IonApp>
);
export default App;
Also, I’m not able to use -l --external due to Vite maybe ?
Thanks in advance for your help
Thomas