1. Crear el proyecto con Vite y TypeScript
npm create vite@latest nombre-proyecto --template react-ts
Cambiamos al directorio del proyecto e instalamos las dependencias
cd nombre-proyecto npm install
2. Instalar Ionic React y las dependencias de estilo
npm install @ionic/react @ionic/react-router ionicons npm install @ionic/react/css
3. Configurar Ionic Router
import React from 'react'; import ReactDOM from 'react-dom/client'; import { IonReactRouter } from '@ionic/react-router'; import { setupIonicReact } from '@ionic/react'; import App from './App'; import './index.css'; // Inicializar Ionic setupIonicReact(); ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render( <React.StrictMode> <IonReactRouter> <App /> </IonReactRouter> </React.StrictMode> );
4. Agregar Ionic Styles
@import "@ionic/react/css/core.css"; @import "@ionic/react/css/normalize.css"; @import "@ionic/react/css/structure.css"; @import "@ionic/react/css/typography.css"; @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";
5. Instalar Redux y Configurarlo
Instala Redux Toolkit con soporte para TypeScript:
npm install @reduxjs/toolkit react-redux
Configuración de Redux:
- Crea una carpeta
store/
en el proyecto. - Dentro de
store/
, crea un archivostore.ts
: - Envuélvelo con el
Provider
de Redux enmain.tsx
:
import { configureStore, createSlice } from '@reduxjs/toolkit'; // Tipos para el estado interface EjemploState { value: number; } // Estado inicial const initialState: EjemploState = { value: 0, }; // Crear slice const ejemploSlice = createSlice({ name: 'ejemplo', initialState, reducers: { incrementar: (state) => { state.value += 1; }, decrementar: (state) => { state.value -= 1; }, }, }); export const { incrementar, decrementar } = ejemploSlice.actions; // Configurar el store export const store = configureStore({ reducer: { ejemplo: ejemploSlice.reducer, }, }); // Tipos de ayuda export type RootState = ReturnType<typeof store.getState>; export type AppDispatch = typeof store.dispatch;
import { Provider } from 'react-redux'; import { store } from './store/store'; ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render( <React.StrictMode> <Provider store={store}> <IonReactRouter> <App /> </IonReactRouter> </Provider> </React.StrictMode> );
6. Uso en Componentes con TypeScript
Ejemplo de cómo usar Redux en un componente con TypeScript:
import React from 'react'; import { useSelector, useDispatch } from 'react-redux'; import { IonButton, IonContent, IonPage } from '@ionic/react'; import { incrementar, decrementar } from './store/store'; import { RootState } from './store/store'; const Home: React.FC = () => { const valor = useSelector((state: RootState) => state.ejemplo.value); const dispatch = useDispatch(); return ( <IonPage> <IonContent> <h1>Contador: {valor}</h1> <IonButton onClick={() => dispatch(incrementar())}>Incrementar</IonButton> <IonButton onClick={() => dispatch(decrementar())}>Decrementar</IonButton> </IonContent> </IonPage> ); }; export default Home;
7. Configurar las Rutas
Configura las rutas en App.tsx
usando Ionic Router. Ejemplo:
import React from 'react'; import { IonApp, IonRouterOutlet } from '@ionic/react'; import { Route } from 'react-router-dom'; import Home from './Home'; const App: React.FC = () => ( <IonApp> <IonRouterOutlet> <Route exact path="/" component={Home} /> </IonRouterOutlet> </IonApp> ); export default App;
Espero que les sirva de ayuda y que tengan un feliz día!