Перейти к содержанию
  • Лента
  • Категории
  • Последние
  • Метки
  • Популярные
  • Пользователи
  • Группы
Свернуть
exlends
Категории
  1. Главная
  2. Категории
  3. Фронтенд
  4. React 19: новые хуки и Server Components для масштабируемых приложений

React 19: новые хуки и Server Components для масштабируемых приложений

Запланировано Прикреплена Закрыта Перенесена Фронтенд
react 19server componentsновые хуки
1 Сообщения 1 Постеры 89 Просмотры
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • hannadevH Не в сети
    hannadevH Не в сети
    hannadev
    написал в отредактировано kirilljsx
    #1

    9b8e5f3c-ed65-42ae-beb0-6776915dfb65-image.jpeg

    React 19 приносит новые хуки и улучшенные Server Components, которые решают проблемы производительности и масштабируемости в больших приложениях. Эти фичи упрощают работу с данными, уменьшают размер бандлов и ускоряют загрузку страниц. С их помощью разработчики могут строить приложения, где сервер берет на себя тяжелую логику, а клиент - только интерактивность.

    Зачем это нужно? В крупных проектах клиентский JavaScript разрастается, страницы грузятся медленно, а SEO страдает от слабого серверного рендеринга. React 19 меняет подход: серверные компоненты рендерятся на сервере, хуки оптимизируют асинхронные операции. В итоге - быстрее TTI, меньше кода на клиенте и проще масштабирование.

    Server Components: рендеринг на сервере без лишнего кода

    Server Components в React 19 - это компоненты, которые выполняются исключительно на сервере и отправляют готовый HTML клиенту. Они решают проблемы гидратации, когда клиентский и серверный рендер расходятся, вызывая ошибки. Теперь не нужно директиву ‘use server’ для самих компонентов - React автоматически определяет их по контексту импорта в серверный файл.

    Это упрощает архитектуру: сервер берет запросы к БД, файлам или API, а клиент - события и состояние. В больших приложениях это снижает размер JS-бандла на 30-50%, ускоряет первую загрузку. Представьте список пользователей: раньше fetch в useEffect выполнялся дважды, теперь - раз на сервере. Фреймворки вроде Next.js идеально интегрируются, выдавая четкие ошибки при смешивании клиентского и серверного кода.

    Вот ключевые изменения в сравнении:

    Аспект До React 19 React 19
    Директива ‘use server’ в каждом файле Автоматически по импорту
    Гидратация Часты несоответствия Стриминг и оптимизация
    Доступ к ресурсам Через API Прямой к БД/файлам
    Размер бандла Большой JS Минимальный клиентский код
    • Автоматическое определение: Компонент рендерится на сервере, если импортирован в серверный контекст. Нюанс: клиентские компоненты требуют ‘use client’.
    • Прямой доступ: Запросы к БД внутри компонента, без отдельных эндпоинтов.
    • Стриминг: HTML приходит по частям, улучшая воспринимаемую скорость.
    • Ошибки сборки: React блокирует микс клиентских API вроде localStorage в серверном коде.

    Новые хуки: use и оптимистичные обновления

    Хуки в React 19 упрощают асинхронные операции и состояние форм. Главный новичок - use, который читает промисы или контексты прямо в компоненте. Раньше для данных из CMS использовали useEffect после рендера, что тормозило UI. Теперь use(messagePromise) возвращает данные или ошибку автоматически.

    Это особенно полезно в Server Components: хук ждет разрешения промиса на сервере. Еще появились useActionState и useOptimistic для форм. useActionState заменяет useFormState, отслеживая состояние серверных действий. useOptimistic обновляет UI мгновенно, до ответа сервера - пользователь видит изменения сразу, без задержек.

    Пример простоты:

    const data = use(fetch('/api/users')); // Промис разрешается на сервере
    

    Список ключевых хуков:

    • use: Для промисов и контекстов. Поддерживает Suspense для fallback’ов.
    • useActionState: Состояние серверных экшенов в клиентских формах.
    • useOptimistic: Оптимистичные обновления. Пример: лайк кнопки мигает сразу.
    • useFormStatus: Прогресс форм в дочерних компонентах.
    Хук Задача Пример использования
    use Асинхронные данные use(promise) в RSC
    useActionState Формы и экшены Отслеживание submit
    useOptimistic Быстрый UI update UI, rollback on error

    Server Actions: мост между клиентом и сервером

    Server Actions - функции с ‘use server’, вызываемые из клиентских компонентов. Они создают туннель для данных: клиент шлет форму, сервер сохраняет в БД без API-роутов. Это упрощает код - никаких fetch/post вручную.

    В больших приложениях actions масштабируют: прямой доступ к ресурсам сервера, встроенная защита CSRF. Передаются как пропсы или импорты. Комбинируя с хуками, получаем формы с мгновенной обратной связью. Минус: только POST-подобные операции, но для мутаций идеально.

    Практические плюсы:

    • Нет лишних эндпоинтов - action в отдельном файле.
    • Интеграция с хуками: useActionState показывает pending/error/данные.

    Пример:

    // actions.js
    'use server';
    export async function createUser(formData) { /* save to DB */ }
    
    // ClientForm.jsx
    import { createUser } from './actions';
    <button formAction={createUser}>Создать</button>
    

    Масштабирование приложений с React 19

    React 19 делает крупные приложения быстрее и проще в поддержке. Server Components и хуки уменьшают клиентский код, улучшают SEO и метрики Core Web Vitals. Остается экспериментировать с гибридными архитектурами: где серверный рендер для контента, клиентский - для дашбордов.

    Внедрение постепенное - фреймворки мигрируют автоматически. Стоит подумать о рефакторинге legacy: перенести статические части на сервер, хуки - для интерактива. Дальше - рост экосистемы с новыми паттернами под RSC.

    1 ответ Последний ответ
    0

    Здравствуйте! Похоже, вас заинтересовала эта беседа, но у вас ещё нет аккаунта.

    Надоело каждый раз пролистывать одни и те же посты? Зарегистрировав аккаунт, вы всегда будете возвращаться на ту же страницу, где были раньше, и сможете выбирать, получать ли уведомления о новых ответах (по электронной почте или в виде push-уведомлений). Вы также сможете сохранять закладки и ставить лайки постам, чтобы выразить свою благодарность другим участникам сообщества.

    С вашими комментариями этот пост мог бы стать ещё лучше 💗

    Зарегистрироваться Войти

    Категории

    • Главная
    • Новости
    • Фронтенд
    • Бекенд
    • Языки программирования

    Контакты

    • Сотрудничество
    • info@exlends.com

    © 2024 - 2026 ExLends, Inc. Все права защищены.

    Политика конфиденциальности
    • Войти

    • Нет учётной записи? Зарегистрироваться

    • Войдите или зарегистрируйтесь для поиска.
    • Первое сообщение
      Последнее сообщение
    0
    • Лента
    • Категории
    • Последние
    • Метки
    • Популярные
    • Пользователи
    • Группы