Обновление до React 18: комплексное руководство по новым методам и примерам

React 18 — это новейшая основная версия популярной библиотеки JavaScript для создания пользовательских интерфейсов. Он включает в себя несколько новых функций, улучшений производительности и изменений «под капотом». В этой статье мы рассмотрим различные методы и предоставим примеры кода, которые помогут вам успешно обновить приложение React до версии 18.

  1. Параллельный рендеринг.
    В React 18 представлен параллельный рендеринг, который позволяет повысить производительность и скорость реагирования приложений. Благодаря параллельному рендерингу React может работать над несколькими задачами одновременно, что делает пользовательский интерфейс более гибким. Чтобы включить параллельный рендеринг, вам необходимо обернуть корневой компонент компонентом <React.StrictMode>.
import React from 'react';
function App() {
  return (
    <React.StrictMode>
      {/* Your app components */}
    </React.StrictMode>
  );
}
export default App;
  1. Новое преобразование JSX.
    В React 18 представлено новое преобразование JSX, которое обеспечивает более простой и гибкий способ написания кода JSX. Это устраняет необходимость импорта Reactи поддерживает фрагменты без необходимости использования дополнительного элемента-оболочки. Чтобы включить новое преобразование JSX, вам необходимо обновить конфигурацию Babel.
// .babelrc or babel.config.js
module.exports = {
  presets: [
    ['@babel/preset-react', { runtime: 'automatic' }]
  ]
};
  1. Границы ошибок.
    React 18 улучшает обработку ошибок за счет введения границ ошибок. Границы ошибок — это компоненты, которые улавливают ошибки JavaScript в своих дочерних компонентах во время рендеринга, методов жизненного цикла и обработчиков событий. Вы можете определить компонент границы ошибки, используя метод жизненного цикла componentDidCatch.
import React, { Component } from 'react';
class ErrorBoundary extends Component {
  constructor(props) {
    super(props);
    this.state = { hasError: false };
  }
  componentDidCatch(error, info) {
    this.setState({ hasError: true });
    // Log error information or perform error handling
  }
  render() {
    if (this.state.hasError) {
      return <h1>Something went wrong.</h1>;
    }
    return this.props.children;
  }
}
export default ErrorBoundary;
  1. Suspense и React.lazy():
    React 18 представляет улучшения в разделении кода и отложенной загрузке с помощью компонента Suspenseи функции React.lazy(). Эти функции позволяют загружать компоненты асинхронно, сокращая начальное время загрузки вашего приложения.
import React, { Suspense } from 'react';
const LazyComponent = React.lazy(() => import('./LazyComponent'));
function App() {
  return (
    <Suspense fallback={<div>Loading...</div>}>
      <LazyComponent />
    </Suspense>
  );
}
export default App;
  1. Делегирование событий.
    В React 18 появилось свойство rootдля обработчиков событий, позволяющее делегировать события. Вместо того, чтобы прикреплять обработчики событий к отдельным элементам, вы можете прикрепить их на более высоком уровне, например, корневом компоненте. Это может повысить производительность, особенно в больших приложениях со множеством обработчиков событий.
import React from 'react';
function App() {
  const handleClick = (event) => {
    if (event.target.tagName === 'BUTTON') {
      // Handle button click
    }
  };
  return (
    <div onClick={handleClick}>
      <button>Click me</button>
    </div>
  );
}
export default App;

Обновление до React 18 открывает новые возможности для ваших приложений React благодаря улучшенной производительности и дополнительным функциям. В этой статье мы рассмотрели различные методы с примерами кода, которые помогут вам осуществить плавный переход. Используя параллельный рендеринг, новое преобразование JSX, границы ошибок, приостановку, отложенную загрузку и делегирование событий, вы можете в полной мере воспользоваться возможностями React 18 и улучшить свои пользовательские интерфейсы.