React Suspense y Error Boundaries: Gesti贸n Avanzada de Carga y Manejo de Errores | MLOG | MLOG}> ); }; export default App;

En este ejemplo:

Entendiendo Error Boundaries

Error Boundaries son componentes de React que capturan errores de JavaScript en cualquier lugar de su 谩rbol de componentes secundarios, registran esos errores y muestran una interfaz de usuario de respaldo en lugar de bloquear toda la aplicaci贸n. Proporcionan una forma de manejar elegantemente los errores inesperados, mejorando la experiencia del usuario y haciendo que su aplicaci贸n sea m谩s robusta.

Conceptos clave de Error Boundaries

Implementaci贸n b谩sica de Error Boundaries

Aqu铆 hay un ejemplo simple de c贸mo crear un Error Boundary:


import React, { Component } from 'react';

class ErrorBoundary extends Component {
  constructor(props) {
    super(props);
    this.state = { hasError: false };
  }

  static getDerivedStateFromError(error) {
    // Actualiza el estado para que la siguiente renderizaci贸n muestre la interfaz de usuario de respaldo.
    return { hasError: true };
  }

  componentDidCatch(error, errorInfo) {
    // Tambi茅n puede registrar el error en un servicio de informes de errores
    console.error(error, errorInfo);
  }

  render() {
    if (this.state.hasError) {
      // Puede renderizar cualquier interfaz de usuario de respaldo personalizada
      return 

Algo sali贸 mal.

; } return this.props.children; } } export default ErrorBoundary;

En este ejemplo:

Usando Error Boundaries

Para usar el componente `ErrorBoundary`, simplemente envuelva los componentes que desea proteger con 茅l:


import React from 'react';
import ErrorBoundary from './ErrorBoundary';

const MyComponent = () => {
  // Simular un error
  throw new Error('隆Ocurri贸 un error!');
};

const App = () => {
  return (
    
      
    
  );
};

export default App;

En este ejemplo, si ocurre un error en `MyComponent`, el componente `ErrorBoundary` capturar谩 el error y mostrar谩 la interfaz de usuario de respaldo.

Combinando Suspense y Error Boundaries

Suspense y Error Boundaries se pueden combinar para proporcionar una estrategia de manejo de errores robusta y completa para operaciones as铆ncronas. Al envolver componentes que podr铆an suspenderse con Suspense y Error Boundaries, puede manejar tanto los estados de carga como los errores inesperados con elegancia.

Ejemplo de combinaci贸n de Suspense y Error Boundaries


import React, { Suspense } from 'react';
import ErrorBoundary from './ErrorBoundary';

// Simular la obtenci贸n de datos (por ejemplo, de una API)
const fetchData = () => {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      // Simular una obtenci贸n de datos exitosa
      // resolve({ name: 'John Doe', age: 30 });

      // Simular un error durante la obtenci贸n de datos
      reject(new Error('Error al obtener los datos del usuario'));

    }, 2000);
  });
};

// Crear un recurso que Suspense puede usar
const createResource = (promise) => {
  let status = 'pending';
  let result;
  let suspender = promise().then(
    (r) => {
      status = 'success';
      result = r;
    },
    (e) => {
      status = 'error';
      result = e;
    }
  );

  return {
    read() {
      if (status === 'pending') {
        throw suspender;
      } else if (status === 'error') {
        throw result;
      }

      return result;
    },
  };
};

const userData = createResource(fetchData);

// Componente que lee del recurso
const UserProfile = () => {
  const data = userData.read();
  return (
    

Nombre: {data.name}

Edad: {data.age}

); }; const App = () => { return ( Cargando datos de usuario...}> ); }; export default App;

En este ejemplo:

T茅cnicas avanzadas y mejores pr谩cticas

Optimizaci贸n del rendimiento de Suspense

Error Boundaries personalizadas

Puede crear Error Boundaries personalizadas para manejar tipos espec铆ficos de errores o para proporcionar mensajes de error m谩s informativos. Por ejemplo, puede crear un Error Boundary que muestre una interfaz de usuario de respaldo diferente seg煤n el tipo de error que ocurri贸.

Renderizaci贸n del lado del servidor (SSR) con Suspense

Suspense se puede usar con la renderizaci贸n del lado del servidor (SSR) para mejorar el rendimiento de la carga inicial de la p谩gina. Cuando usa SSR, puede pre-renderizar el estado inicial de su aplicaci贸n en el servidor y luego transmitir el contenido restante al cliente. Suspense le permite manejar la obtenci贸n de datos as铆ncrona durante SSR y mostrar indicadores de carga mientras se transmiten los datos.

Manejo de diferentes escenarios de error

Considere estos diferentes escenarios de error y c贸mo manejarlos:

Manejo global de errores

Implemente un mecanismo global de manejo de errores para capturar errores que no son capturados por Error Boundaries. Esto se puede hacer usando un controlador de errores global o envolviendo toda la aplicaci贸n en un Error Boundary.

Ejemplos del mundo real y casos de uso

Aplicaci贸n de comercio electr贸nico

En una aplicaci贸n de comercio electr贸nico, Suspense se puede usar para mostrar indicadores de carga mientras se obtienen datos de productos, y Error Boundaries se pueden usar para manejar los errores que ocurren durante el proceso de pago. Por ejemplo, imagine a un usuario de Jap贸n navegando por una tienda en l铆nea ubicada en los Estados Unidos. Las im谩genes y descripciones de los productos podr铆an tardar un tiempo en cargarse. Suspense puede mostrar una simple animaci贸n de carga mientras estos datos se obtienen de un servidor posiblemente en la otra punta del mundo. Si la pasarela de pago falla debido a un problema de red temporal (com煤n en diferentes infraestructuras de Internet a nivel mundial), un Error Boundary podr铆a mostrar un mensaje amigable al usuario solicit谩ndole que intente nuevamente m谩s tarde.

Plataforma de redes sociales

En una plataforma de redes sociales, Suspense se puede usar para mostrar indicadores de carga mientras se obtienen perfiles y publicaciones de usuarios, y Error Boundaries se pueden usar para manejar los errores que ocurren al cargar im谩genes o videos. Un usuario que navega desde India podr铆a experimentar tiempos de carga m谩s lentos para los medios alojados en servidores en Europa. Suspense puede mostrar un marcador de posici贸n hasta que el contenido se cargue por completo. Si los datos del perfil de un usuario en particular est谩n corruptos (raro pero posible), un Error Boundary puede evitar que todo el feed de redes sociales se bloquee, mostrando un simple mensaje de error como "No se puede cargar el perfil del usuario" en su lugar.

Aplicaci贸n de panel de control

En una aplicaci贸n de panel de control, Suspense se puede usar para mostrar indicadores de carga mientras se obtienen datos de m煤ltiples fuentes, y Error Boundaries se pueden usar para manejar los errores que ocurren al cargar gr谩ficos. Un analista financiero en Londres que accede a un panel de control de inversi贸n global podr铆a estar cargando datos de m煤ltiples bolsas de todo el mundo. Suspense puede proporcionar indicadores de carga para cada fuente de datos. Si la API de una bolsa est谩 inactiva, un Error Boundary puede mostrar un mensaje de error espec铆ficamente para los datos de esa bolsa, evitando que todo el panel de control se vuelva inutilizable.

Conclusi贸n

React Suspense y Error Boundaries son herramientas esenciales para construir aplicaciones React resilientes y f谩ciles de usar. Al usar Suspense para administrar los estados de carga y Error Boundaries para manejar errores inesperados, puede mejorar la experiencia general del usuario y simplificar el proceso de desarrollo. Esta gu铆a ha proporcionado una descripci贸n general completa de Suspense y Error Boundaries, cubriendo todo, desde conceptos b谩sicos hasta t茅cnicas avanzadas. Al seguir las mejores pr谩cticas descritas en este art铆culo, puede construir aplicaciones React robustas y confiables que pueden manejar incluso los escenarios m谩s desafiantes.

A medida que React contin煤a evolucionando, es probable que Suspense y Error Boundaries desempe帽en un papel cada vez m谩s importante en la construcci贸n de aplicaciones web modernas. Al dominar estas funciones, puede mantenerse a la vanguardia y ofrecer experiencias de usuario excepcionales.