«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Автоматическая пакетная обработка React: как свести к минимуму повторные рендеринги и повысить производительность

Автоматическая пакетная обработка React: как свести к минимуму повторные рендеринги и повысить производительность

Опубликовано 9 ноября 2024 г.
Просматривать:692

React Automatic Batching: How to Minimize Re-Renders and Boost Performance

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

Введение: проблема непроизводительного рендеринга в больших приложениях React

Допустим, вы готовите ужин и вместо того, чтобы готовить все блюда сразу, вы продолжаете готовить каждое из них по отдельности — очевидно, это неэффективно, не так ли? То же самое происходит в React, когда обновления состояния обрабатываются одно за другим, вызывая несколько рендерингов вместо одного. Это приводит к ненужным затратам обработки и снижению производительности, особенно в больших приложениях.

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

Что такое автоматическое пакетирование в React 18?

Взгляд на новую функцию

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

До React 18 пакетная обработка применялась только внутри обработчиков событий. Однако React 18 расширяет пакетную обработку на все обновления в асинхронных функциях, таких как setTimeout, промисы и прослушиватели событий, что делает его более мощным и всеобъемлющим.

Пример автоматического пакетирования

Вот пример того, как работает автоматическая пакетная обработка в React 18:

import { useState } from 'react';

function MyComponent() {
  const [count, setCount] = useState(0);
  const [text, setText] = useState('');

  function handleClick() {
    setCount(count   1);
    setText('Updated');
    // Both updates are batched, and only one re-render happens
  }

  return (
    

{count}

{text}

); }

В приведенном выше коде обновления состояния для количества и текста объединяются вместе, вызывая один повторный рендеринг вместо двух. Это стало возможным благодаря автоматической пакетной обработке в React 18.

Почему это важно для производительности

Как это уменьшает количество ненужных повторных рендерингов

В React каждый раз при изменении состояния происходит повторный рендеринг. Если у вас есть несколько обновлений состояния, которые происходят одно за другим, как в обработчике событий, React обычно запускает несколько рендерингов. Это может замедлить работу вашего приложения, особенно при его масштабировании.

Автоматическая пакетная обработка объединяет эти обновления состояния в один проход рендеринга. Представьте себе, что вы заполняете форму с несколькими полями, и каждое изменение ввода приводит к перерисовке всей формы. Благодаря автоматической пакетной обработке React обрабатывает все эти изменения за один раз, делая пользовательский интерфейс более плавным и быстрым.

Распространенные случаи использования автоматического пакетирования

Примеры обновлений состояния в обработчиках событий и эффектах

Автоматическая пакетная обработка работает во многих ситуациях, в том числе:

  1. Обработчики событий: Реагируйте на уже пакетные обновления в обработчиках событий, но теперь стало еще лучше обрабатывать несколько обновлений без ненужных рендерингов.
   function handleSubmit() {
     setFormSubmitted(true);
     setFormData({ ...formData, submittedAt: new Date() });
     // Only one re-render happens here
   }
  1. Эффекты и асинхронные функции: в React 18 пакетная обработка легко работает внутри асинхронного кода, такого как setTimeout и промисы.
   setTimeout(() => {
     setLoading(false);
     setUser({ name: 'John' });
     // These state changes are batched, so only one re-render
   }, 1000);

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

Ручное пакетирование с помощью flashSync: когда и почему его следует использовать

Что такое флешсинк?

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

Когда использовать флешсинк

Вам следует использоватьlushSync в сценариях, где вам необходимо убедиться, что состояние обновляется и отражается в DOM немедленно, а не ждет, пока React выполнит пакетные обновления. Это часто необходимо в ситуациях, когда время имеет решающее значение, например, при анимации или мгновенной визуальной обратной связи.

Вот как работает флешсинк:

import { flushSync } from 'react-dom';

function handleClick() {
  flushSync(() => {
    setCount(count   1);
  });
  // The DOM is updated immediately after the state change
  console.log('Count updated:', count);
}

В этом примере React сразу же обрабатывает обновление setCount, гарантируя, что DOM немедленно отразит изменение, что полезно для действий, чувствительных ко времени.

Заключение: как пакетная обработка помогает оптимизировать производительность React в современных приложениях

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

В большинстве случаев автоматическое пакетное использование отлично работает сразу после установки, но если вам когда-нибудь понадобится больше контроля, вы можете использовать flushSync для обработки обновлений в режиме реального времени.

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


Готовы оптимизировать свое приложение React с помощью автоматической пакетной обработки? Попробуйте реализовать эту функцию в своем следующем проекте и посмотрите, насколько она улучшит производительность вашего приложения!


Если вам понравилась эта статья, поддержите мою работу:

  • Купи мне кофе
  • Закажите звонок для получения наставничества или совета по карьере
  • Следуйте за мной в Твиттере
  • Подключитесь к LinkedIn
Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/paharihacker/react-18-automatic-batching-how-to-minimize-re-renders-and-boost- Performance-15oc?1 Если есть какие-либо нарушения, пожалуйста, сообщите об этом. свяжитесь с Study_golang@163 .comdelete
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3