Использование ленивой загрузки (lazy loading) в React
22 дня назад·2 мин. на чтение
В этой статье мы покажем, как использовать ленивую загрузку (lazy loading) в React для улучшения производительности приложений.
React, стал одним из самых популярных JavaScript-фреймворков для создания пользовательских интерфейсов. С появлением функциональных компонентов и хуков в React, разработчики получили новые инструменты для более чистого и эффективного кода. Однако, с увеличением размеров проектов, возникает проблема производительности, и в этом контексте ленивая загрузка (lazy loading) становится важным инструментом.
1.
React предоставляет функцию
2.
Для отображения состояния ожидания загрузки ленивых компонентов используется компонент
Что такое Ленивая Загрузка?
Ленивая загрузка — это техника оптимизации производительности, которая позволяет откладывать загрузку определенных частей кода (или ресурсов) до тех пор, пока они действительно не понадобятся. В React ленивая загрузка применяется к компонентам, что особенно полезно при работе с крупными проектами.Преимущества Ленивой Загрузки в React
- Уменьшение начальной загрузки страницы: Ленивая загрузка позволяет снизить объем загружаемого кода при первоначальной загрузке страницы, что улучшает время загрузки и пользовательский опыт.
- Оптимизация производительности: Загрузка компонентов по требованию помогает уменьшить нагрузку на ресурсы и улучшить отзывчивость приложения, поскольку только необходимый код будет загружен в момент, когда компонент станет видимым.
- Экономия трафика: Ленивая загрузка также означает, что пользователи не будут загружать весь код приложения сразу, что особенно важно для пользователей с медленным интернет-соединением.
Как использовать Ленивую Загрузку в React
1. React.lazy()
React предоставляет функцию React.lazy()
, которая позволяет лениво загружать компоненты. Пример:
const MyLazyComponent = React.lazy(() => import('./MyComponent'));
2. Suspense
Для отображения состояния ожидания загрузки ленивых компонентов используется компонент Suspense
. Пример:
const MyLazyComponent = React.lazy(() => import('./MyComponent')); function MyComponentWrapper() { return ( <React.Suspense fallback={<div>Loading...</div>}> <MyLazyComponent /> </React.Suspense> ); }
3. Использование в функциональных компонентах
Ленивая загрузка также легко интегрируется в функциональные компоненты. Пример:import React, { lazy, Suspense } from 'react'; const MyLazyComponent = lazy(() => import('./MyComponent')); function App() { return ( <div> <Suspense fallback={<div>Loading...</div>}> <MyLazyComponent /> </Suspense> </div> ); } export default App;
Итоги
Использование ленивой загрузки в React для функциональных компонентов является мощным инструментом оптимизации производительности. Эта техника позволяет улучшить время загрузки приложения, оптимизировать использование ресурсов и создавать более отзывчивые веб-приложения. При разработке больших проектов важно рассматривать ленивую загрузку как неотъемлемую часть процесса оптимизации.Полное руководство по React Router v6. Часть 1 - Основы React Router
2 года назад·3 мин. на чтение
React Router — самая популярная библиотека маршрутизации в React, но разобраться в некоторых из более сложных функций может быть немного сложно. В этой серии статей рассмотрим все, что вам нужно знать о React Router, чтобы вы могли с легкостью использовать даже самые продвинутые функции.
Серия статей о React Router v6 состоит из 4 частей.
- Основы React Router (рассматривается в этой статье)
- Продвинутые определения маршрутов
- Управление навигацией
- Подробно о роутерах
Основы React Router
Прежде чем мы начнем углубляться в расширенные функции React Router, сначала поговорим об основах React Router. Чтобы использовать React Router, вам необходимо запуститьnpm i react-router-dom
для установки React Router. Эта библиотека устанавливает DOM версию React Router. Если вы используете React Native, вам нужно будет установить react-router-native
. За исключением этого небольшого отличия, библиотеки работают почти одинаково.
В этой статье сосредоточимся на react-router-dom
, но, как уже упоминалось, обе библиотеки почти идентичны.
Чтобы использовать React Router, вам нужно сделать три вещи.
- Настроить роутер
- Прописать свои маршруты
- Управлять навигацией
Настройка роутера
Настройка роутера является самым простым шагом. Все, что вам нужно сделать, это импортировать конкретный роутер, который вам нужен (BrowserRouter
для веба и NativeRouter
для мобильных устройств) и обернуть все ваше приложение в этот роутер.
Как правило, вы импортируете свой маршрутизатор в файлеimport React from "react" import ReactDOM from "react-dom/client" import App from "./App" import { BrowserRouter } from "react-router-dom" const root = ReactDOM.createRoot(document.getElementById("root")) root.render( <React.StrictMode> <BrowserRouter> <App /> </BrowserRouter> </React.StrictMode> )
index.js
вашего приложения, и он будет оборачивать компонент App
. Роутер работает так же, как контекст в React, и предоставляет всю необходимую информацию вашему приложению, чтобы вы могли выполнять маршрутизацию и использовать все пользовательские хуки из React Router.
Определение маршрутов
Следующим шагом в React Router является определение ваших маршрутов. Обычно это делается на верхнем уровне приложения, например в компонентеApp
, но это можно сделать в любом месте.
Определить маршруты так же просто, как определить компонентimport { Route, Routes } from "react-router-dom" import { Home } from "./Home" import { BookList } from "./BookList" export function App() { return ( <Routes> <Route path="/" element={<Home />} /> <Route path="/books" element={<BookList />} /> </Routes> ) }
Route
для каждого маршрута в приложении, а затем поместить все эти компоненты Route
в один компонент Routes
. Всякий раз, когда ваш URL-адрес изменяется, React Router будет просматривать маршруты, определенные в вашем компоненте Routes
, и он будет отображать содержимое в пропсе element
роута Route
, который имеет path
, соответствующий URL-адресу. В приведенном выше примере, если бы наш URL-адрес был /books
, то отображался бы компонент BookList
.
Преимущество React Router заключается в том, что при переходе между страницами он обновляет только содержимое внутри вашего компонента Routes
. Весь остальной контент на вашей странице останется прежним, что повысит производительность и удобство использования.
Управление навигацией
Последним шагом к React Router является обработка навигации. Обычно в приложении вы перемещаетесь с помощью тегов<a>
, но React Router использует свой собственный кастомный компонент Link
для обработки навигации. Link
представляет собой просто оболочку вокруг тега <a>
, которая помогает обеспечить правильную обработку всей маршрутизации и условного повторного рендеринга, чтобы вы могли использовать его так же, как обычный тег <a>
.
В нашем примере мы добавили две ссылки на главную страницу и страницу книг. Вы также заметите, что мы использовали пропimport { Route, Routes, Link } from "react-router-dom" import { Home } from "./Home" import { BookList } from "./BookList" export function App() { return ( <> <nav> <ul> <li><Link to="/">Home</Link></li> <li><Link to="/books">Books</Link></li> </ul> </nav> <Routes> <Route path="/" element={<Home />} /> <Route path="/books" element={<BookList />} /> </Routes> </> ) }
to
для установки URL-адреса вместо пропса href
, который вы привыкли использовать с тегом <a>
. Это единственное различие между компонентом Link
и тегом <a>
, и это то, что вам нужно помнить, так как легко ошибочно случайно использовать проп href
вместо to
.
Еще одна вещь, которую следует отметить в нашем новом коде, заключается в том, что <nav>
, который мы создаем в верхней части нашей страницы, находится за пределами нашего компонента Routes
, что означает, что при смене страниц этот раздел навигации не будет повторно рендериться, так при изменении URL-адреса изменится только содержимое компонента Routes
.