En esta lección, aprenderemos cómo conectar Redux con una aplicación React. Redux es una biblioteca para la gestión del estado que nos permite manejar el estado de nuestra aplicación de manera predecible y centralizada. Conectar Redux a React nos permite acceder al estado global de la aplicación y despachar acciones desde nuestros componentes.
Objetivos de la Lección
- Entender cómo conectar Redux con React.
- Aprender a usar el
Provider
dereact-redux
. - Utilizar los hooks
useSelector
yuseDispatch
para interactuar con el store de Redux.
Requisitos Previos
- Conocimiento básico de React.
- Familiaridad con los conceptos de Redux, como acciones, reductores y el store.
Pasos para Conectar Redux a React
- Instalación de Dependencias
Primero, necesitamos instalar las dependencias necesarias. Asegúrate de tener redux
y react-redux
instalados en tu proyecto.
- Configuración del Store
Crea un archivo store.js
donde configuraremos nuestro store de Redux.
// store.js import { createStore } from 'redux'; import rootReducer from './reducers'; const store = createStore(rootReducer); export default store;
- Creación del Reducer
Crea un archivo reducers.js
donde definiremos nuestro reductor. Un reductor es una función que toma el estado actual y una acción, y devuelve un nuevo estado.
// reducers.js const initialState = { count: 0 }; const rootReducer = (state = initialState, action) => { switch (action.type) { case 'INCREMENT': return { ...state, count: state.count + 1 }; case 'DECREMENT': return { ...state, count: state.count - 1 }; default: return state; } }; export default rootReducer;
- Proveer el Store a la Aplicación
Usa el componente Provider
de react-redux
para envolver tu aplicación y pasarle el store.
// index.js import React from 'react'; import ReactDOM from 'react-dom'; import { Provider } from 'react-redux'; import App from './App'; import store from './store'; ReactDOM.render( <Provider store={store}> <App /> </Provider>, document.getElementById('root') );
- Conectar Componentes con Redux
Ahora, vamos a conectar nuestros componentes a Redux usando los hooks useSelector
y useDispatch
.
5.1. Usar useSelector
para Leer el Estado
El hook useSelector
nos permite acceder al estado del store.
// Counter.js import React from 'react'; import { useSelector } from 'react-redux'; const Counter = () => { const count = useSelector((state) => state.count); return ( <div> <h1>Count: {count}</h1> </div> ); }; export default Counter;
5.2. Usar useDispatch
para Despachar Acciones
El hook useDispatch
nos permite despachar acciones al store.
// CounterControls.js import React from 'react'; import { useDispatch } from 'react-redux'; const CounterControls = () => { const dispatch = useDispatch(); return ( <div> <button onClick={() => dispatch({ type: 'INCREMENT' })}>Increment</button> <button onClick={() => dispatch({ type: 'DECREMENT' })}>Decrement</button> </div> ); }; export default CounterControls;
- Integrar los Componentes en la Aplicación
Finalmente, integra los componentes en tu aplicación principal.
// App.js import React from 'react'; import Counter from './Counter'; import CounterControls from './CounterControls'; const App = () => { return ( <div> <Counter /> <CounterControls /> </div> ); }; export default App;
Ejercicio Práctico
Ejercicio
- Crea una nueva acción llamada
RESET
que restablezca el contador a 0. - Modifica el reductor para manejar la nueva acción
RESET
. - Añade un nuevo botón en
CounterControls
que despache la acciónRESET
.
Solución
1. Crear la Acción RESET
// reducers.js const rootReducer = (state = initialState, action) => { switch (action.type) { // ... otros casos case 'RESET': return { ...state, count: 0 }; default: return state; } };
2. Añadir el Botón de Reset
// CounterControls.js import React from 'react'; import { useDispatch } from 'react-redux'; const CounterControls = () => { const dispatch = useDispatch(); return ( <div> <button onClick={() => dispatch({ type: 'INCREMENT' })}>Increment</button> <button onClick={() => dispatch({ type: 'DECREMENT' })}>Decrement</button> <button onClick={() => dispatch({ type: 'RESET' })}>Reset</button> </div> ); }; export default CounterControls;
Conclusión
En esta lección, hemos aprendido cómo conectar Redux con una aplicación React utilizando react-redux
. Hemos cubierto cómo configurar el store, crear reductores, y usar los hooks useSelector
y useDispatch
para interactuar con el estado global. Con estos conocimientos, puedes gestionar el estado de tu aplicación de manera más eficiente y predecible.
En la próxima lección, exploraremos técnicas de optimización del rendimiento en React. ¡Sigue adelante!
Curso de React
Módulo 1: Introducción a React
- ¿Qué es React?
- Configuración del Entorno de Desarrollo
- Hola Mundo en React
- JSX: Extensión de Sintaxis de JavaScript
Módulo 2: Componentes de React
- Entendiendo los Componentes
- Componentes Funcionales vs de Clase
- Props: Pasando Datos a Componentes
- State: Gestión del Estado del Componente
Módulo 3: Trabajando con Eventos
- Manejo de Eventos en React
- Renderizado Condicional
- Listas y Claves
- Formularios y Componentes Controlados
Módulo 4: Conceptos Avanzados de Componentes
- Elevando el Estado
- Composición vs Herencia
- Métodos del Ciclo de Vida de React
- Hooks: Introducción y Uso Básico
Módulo 5: Hooks de React
Módulo 6: Enrutamiento en React
Módulo 7: Gestión del Estado
- Introducción a la Gestión del Estado
- API de Contexto
- Redux: Introducción y Configuración
- Redux: Acciones y Reductores
- Redux: Conectando a React
Módulo 8: Optimización del Rendimiento
- Técnicas de Optimización del Rendimiento en React
- Memorización con React.memo
- Hooks useMemo y useCallback
- División de Código y Carga Perezosa
Módulo 9: Pruebas en React
- Introducción a las Pruebas
- Pruebas Unitarias con Jest
- Pruebas de Componentes con React Testing Library
- Pruebas de Extremo a Extremo con Cypress
Módulo 10: Temas Avanzados
- Renderizado del Lado del Servidor (SSR) con Next.js
- Generación de Sitios Estáticos (SSG) con Next.js
- TypeScript con React
- React Native: Creación de Aplicaciones Móviles