1- Отложенная загрузка компонентов.

Одним из наиболее распространенных вариантов использования React Suspense является отложенная загрузка компонентов. Отложенная загрузка компонентов позволяет сократить время начальной загрузки приложения и повысить его общую производительность.

Вот пример того, как вы можете использовать React Suspense для ленивой загрузки компонента:

import React, { lazy, Suspense } from 'react';

const LazyComponent = lazy(() => import('./LazyComponent'));

function App() {
  return (
    <div>
      <Suspense fallback={<div>Loading...</div>}>
        <LazyComponent />
      </Suspense>
    </div>
  );
}

В этом примере мы импортируем lazy и Suspense из React. Затем мы определяем LazyComponent, используя функцию lazy и оператор import. Это говорит React загружать LazyComponent лениво, только когда это необходимо.

Затем мы используем компонент Suspense для рендеринга LazyComponent. Если LazyComponent еще не загружен, React отобразит резервный пользовательский интерфейс, который в данном случае представляет собой простое сообщение о загрузке.

2-Извлечение данных

Другим распространенным вариантом использования React Suspense является управление выборкой данных. Используя React Suspense для обработки выборки данных, вы можете создать более плавный и отзывчивый пользовательский интерфейс.

Вот пример того, как вы можете использовать React Suspense для управления выборкой данных:

import React, { Suspense } from 'react';

const fetchData = () => {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve([
        { id: 1, name: 'John' },
        { id: 2, name: 'Jane' },
        { id: 3, name: 'Bob' },
      ]);
    }, 2000);
  });
};

function DataComponent() {
  const data = fetchData();

  return (
    <ul>
      {data.map(item => (
        <li key={item.id}>{item.name}</li>
      ))}
    </ul>
  );
}

function App() {
  return (
    <div>
      <Suspense fallback={<div>Loading...</div>}>
        <DataComponent />
      </Suspense>
    </div>
  );
}

В этом примере мы определяем функцию fetchData, которая возвращает обещание, которое разрешается с помощью массива данных через 2 секунды. Затем мы определяем DataComponent, который использует функцию fetchData для получения данных и отображения списка элементов.

Мы используем компонент Suspense для рендеринга DataComponent. Если данные еще недоступны, React отобразит резервный пользовательский интерфейс, который в данном случае представляет собой простое сообщение о загрузке.

3-вложенные приостановки

Вы также можете использовать вложенные компоненты Suspense для управления несколькими асинхронными операциями в рамках одного компонента.

Вот пример того, как вы можете использовать вложенные компоненты Suspense:

import React, { lazy, Suspense } from 'react';

const LazyComponent = lazy(() => import('./LazyComponent'));

const fetchData = () => {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve([
        { id: 1, name: 'John' },
        { id: 2, name: 'Jane' },
        { id: 3, name: 'Bob' },
      ]);
    }, 2000);
  });
};

function DataComponent() {
  const data = fetchData();

  return (
    <ul>
      {data.map(item => (
        <li key={item.id}>{item.name}</li>
      ))}
    </ul>
  );
}

function App() {
  return (
    <div>
      <Suspense fallback={<div>Loading...</div>}>
        <DataComponent />
        <Suspense fallback={<div>Loading...</div>}>
          <LazyComponent />
        </Suspense>
      </Suspense>
    </div>
  );
}

В этом примере мы определяем функцию fetchData, которая возвращает обещание, которое разрешается с помощью массива данных через 2 секунды. Затем мы определяем DataComponent, который использует функцию fetchData для получения данных и отображения списка элементов.

Мы используем компонент верхнего уровня Suspense для рендеринга как DataComponent, так и LazyComponent. Если данные еще недоступны, React отобразит резервный пользовательский интерфейс, который в данном случае представляет собой простое сообщение о загрузке.

Мы также используем вложенный компонент Suspense для обработки ленивой загрузки файла LazyComponent. Если LazyComponent еще не загружен, React отобразит резервный пользовательский интерфейс, который также является простым сообщением о загрузке.

Используя вложенные Suspense компонентов, мы можем управлять несколькими асинхронными операциями в одном компоненте и обеспечивать плавный и отзывчивый пользовательский интерфейс.

Спасибо, что читаете мой блог

Лавджот Сайни