Implementación de Loader y Favoritos en App de Pokémones

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

Resumen

¿Cómo mejorar la experiencia del usuario con un Loader?

En el ámbito del desarrollo web, es crucial ofrecer una experiencia de usuario que no solo sea funcional, sino también visualmente agradable e intuitiva. Al trabajar con APIs y manejar cargas de datos, los Loaders son esenciales para informar al usuario que una acción está en progreso. Aquí te mostramos cómo implementar un Loader en una aplicación utilizando el componente Spin de Ant Design.

¿Cómo integrar un componente Spin en tu aplicación?

Ant Design provee un conjunto de componentes útiles y Spin es uno de ellos, ideal para mostrar que el sistema está ocupado procesando una acción. Sigue estos pasos para añadirlo a tu aplicación:

  1. Importación del componente:

    • Abre el archivo App.js y asegúrate de importar Spin desde Ant Design.
    import { Spin } from 'antd';
    
  2. Uso del componente:

    • Coloca el componente Spin donde quieras que aparezca en tu UI. Puedes siempre mostrarlo inicialmente y luego condicionar su visibilidad.
    • Ajusta su tamaño utilizando la propiedad size a "large" para mejor visibilidad.
    <Spin spinning={true} size="large" />
    
  3. Centrado del Loader:

    • Asegúrate de usar el sistema Grid de Ant Design para centrar el Loader. Un Col con un span de 12 y un offset puede ser suficiente para centrarlo horizontalmente.
    <Col span={12} offset={6}>
        <Spin spinning={true} size="large" />
    </Col>
    

¿Cómo manejar la visibilidad del Loader?

Para que el Loader se muestre solo cuando se está realizando una petición a la API, debes controlar la propiedad spinning:

  1. Estado inicial (reducer):

    • Añade una propiedad loading en el estado inicial dentro de tu reducer.
    const initialState = {
        loading: false,
        // otras propiedades
    };
    
  2. Crear una acción para setear el estado de carga:

    • Define un nuevo type y acción en Types y Actions respectivamente para setear el estado loading.
    export const SET_LOADING = 'SET_LOADING';
    
    export const setLoading = (value) => ({
        type: SET_LOADING,
        payload: value,
    });
    
  3. Modificar el estado desde el reducer:

    • Implementa el caso SET_LOADING en el reducer para actualizar el estado loading.
    case SET_LOADING:
        return {
            ...state,
            loading: action.payload,
        };
    
  4. Uso del UseSelector para acceder al estado:

    • En App.js, utiliza useSelector para obtener el valor de loading desde el estado y controlar el componente Spin.
    const loading = useSelector(state => state.loading);
    
  5. Manejo de acciones durante la llamada a la API:

    • Por último, asegúrate de despachar las acciones setLoading antes y después de las llamadas a la API para cambiar el estado loading en consecuencia.
    dispatch(setLoading(true));
    // llamada a la API
    dispatch(setLoading(false));
    

Implementar correctamente estos pasos asegura que tu Loader proporciona una experiencia de usuario más transparente y educativa sobre el estado de tu aplicación.

¿Cómo añadir espacio entre el buscador y el Loader?

Para mejorar la presentación visual de tu UI, es importante prestar atención a los detalles, como el espaciado entre componentes.

  1. Ajuste de estilos con margin:
    • Dirígete al lugar donde tienes tu Searcher, el componente de búsqueda, y ajusta el margin-bottom para crear espacio.
    <div style={{ marginBottom: '10px' }}>
        <Searcher />
    </div>
    

Estos ajustes tan simples como el espacio entre elementos pueden impactar en gran medida en la experiencia general del usuario, haciendo que tu aplicación sea más agradable a la vista.

Siguiendo estos pasos cuidadosamente, lograrás no solo implementar un Loader funcional, sino también mejorar significativamente la experiencia de usuario de tu aplicación. ¡Continúa mejorando y explorando nuevas funcionalidades para cautivar a tus usuarios!