Integración de Redux en Aplicaciones React

Clase 8 de 22Curso Profesional de React.js y Redux

Resumen

¿Cómo integrar Redux con React?

Integrar Redux en una aplicación React puede parecer un desafío, pero es esencial para manejar el estado global de forma eficiente. Utilizar tecnologías como Redux y React Redux permite optimizar el código y evitar errores comunes. Veamos paso a paso cómo lograrlo.

¿Cómo instalar Redux y React Redux?

Para iniciar, se deben instalar las librerías necesarias mediante el uso de npm. Desde la terminal, ejecuta el siguiente comando:

npm install redux react-redux

Estas librerías son fundamentales: Redux para gestionar el estado global, y React Redux para facilitar la integración con React.

¿Cómo estructurar las acciones de Redux?

Una vez instaladas las librerías, es momento de estructurar las acciones:

  1. Crear el directorio de actions: Dentro de la carpeta source, genera una carpeta llamada actions.
  2. Definir los tipos de acciones: Es recomendable usar constantes para exportar los tipos (types) de acciones. Esto previene errores tipográficos. Por ejemplo:
// actions/types.js
export const SET_POKEMONS = 'SetPokemons';
  1. Crear los action creators: Los action creators son funciones que retornan un objeto action.
// actions/index.js
import { SET_POKEMONS } from './types';

export const setPokemons = (payload) => ({
  type: SET_POKEMONS,
  payload,
});

¿Cómo conectar Redux con los componentes de React?

Para conectar Redux a un componente React, usamos connect de react-redux.

  1. mapStateToProps: Función que mapea el estado a las propiedades del componente.
const mapStateToProps = (state) => ({
  pokemons: state.pokemons,
});
  1. mapDispatchToProps: Mapea los dispatchers de acciones a las propiedades del componente.
import { setPokemons } from './actions';

const mapDispatchToProps = (dispatch) => ({
  setPokemons: (value) => dispatch(setPokemons(value)),
});
  1. Conectar el componente: Utiliza connect para unir estado y dispatchear acciones.
import { connect } from 'react-redux';

const MyComponent = ({ pokemons, setPokemons }) => {
  // Componente funcional que utiliza pokemons y setPokemons
};

export default connect(mapStateToProps, mapDispatchToProps)(MyComponent);

¿Cómo crear un reducer en Redux?

Los reducers son funciones puras que determinan cómo cambia el estado en respuesta a una acción.

  1. Definir el estado inicial: Usar un objeto clave-valor.
const initialState = {
  pokemons: [],
};
  1. Crear el reducer: Usa una función switch para manejar diferentes tipos de acciones.
import { SET_POKEMONS } from '../actions/types';

const pokemonsReducer = (state = initialState, action) => {
  switch (action.type) {
    case SET_POKEMONS:
      return { ...state, pokemons: action.payload };
    default:
      return state;
  }
};

export default pokemonsReducer;

¿Cómo integrar el Store de Redux en React?

El último paso es envolver la aplicación con el Provider de react-redux.

import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import { createStore } from 'redux';
import pokemonsReducer from './reducers';
import App from './App';

const store = createStore(pokemonsReducer);

ReactDOM.render(
  <Provider store={store}>
    <App />
  </Provider>,
  document.getElementById('root')
);

¿Qué hacer si algo no funciona?

Si la aplicación no muestra los datos esperados, un console.log es una herramienta valiosa para verificar que la lista de pokémons se actualiza correctamente. Asegúrate de revisar que todas las conexiones entre acciones, reducers y componentes están correctamente configuradas.

¿Por qué usar Redux?

Redux proporciona un manejo del estado centralizado, ayudando a desarrollar aplicaciones más predecibles, fáciles de depurar y probar. Si bien este tutorial cubre lo esencial, recuerda que Redux tiene otras formas, como el Redux Toolkit, que veremos más adelante.

¡Continúa explorando y dominando Redux para hacer tus aplicaciones React más escalables y eficientes!