React Automatic Batching: Cara Meminimumkan Re-Render dan Meningkatkan Prestasi

Patricia Arquette
Lepaskan: 2024-10-23 06:27:02
asal
285 orang telah melayarinya

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

Dalam aplikasi React yang besar, pemaparan semula yang membazir boleh menjadi isu penting, memperlahankan prestasi dan menjadikan apl anda berasa lembap. Dengan React 18, batching automatik membantu mengoptimumkan prestasi dengan mengurangkan pemaparan semula yang tidak perlu, memberikan pembangun cara yang lebih cekap untuk mengurus kemas kini keadaan. Panduan ini akan membimbing anda melalui konsep kumpulan automatik dalam React 18, sebab penting untuk prestasi dan cara memanfaatkannya sepenuhnya dalam apl anda.

Pengenalan: Masalah Render Membazir dalam Aplikasi Reaksi Besar

Katakanlah anda sedang memasak makan malam dan bukannya membuat semua hidangan sekaligus, anda terus berulang-alik untuk membuat setiap satu secara berasingan—sudah tentu tidak cekap, bukan? Perkara yang sama berlaku dalam React apabila kemas kini keadaan dikendalikan satu demi satu, menyebabkan berbilang pemaparan dan bukannya satu sahaja. Ini membawa kepada pemprosesan yang sia-sia dan prestasi yang lebih perlahan, terutamanya dalam aplikasi yang besar.

Sebelum React 18, nyatakan kemas kini yang berlaku secara rapat sering menyebabkan berbilang pemaparan semula. React 18 menyelesaikan masalah ini dengan pengumpulan automatik, yang mengumpulkan berbilang kemas kini ke dalam satu kitaran pemaparan, menghasilkan kurang pemaparan semula yang tidak perlu dan prestasi yang dipertingkatkan.

Apakah Pengumpulan Automatik dalam React 18?

Pandangan pada Ciri Baharu

Pengumpulan automatik ialah ciri yang diperkenalkan dalam React 18 yang membolehkan React mengendalikan berbilang kemas kini keadaan dalam acara atau kesan yang sama dan kemudian mencetuskan hanya satu pemaparan semula. Ini meminimumkan bilangan pemaparan dan meningkatkan prestasi keseluruhan aplikasi anda.

Sebelum React 18, batching hanya digunakan dalam pengendali acara. Walau bagaimanapun, React 18 memanjangkan kumpulan kepada semua kemas kini dalam fungsi tak segerak seperti setTimeout, promises dan pendengar acara, menjadikannya lebih berkuasa dan menyeluruh.

Contoh Batching Automatik

Berikut ialah contoh cara pengumpulan automatik berfungsi dalam 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 (
    <div>
      <p>{count}</p>
      <p>{text}</p>
      <button onClick={handleClick}>Update</button>
    </div>
  );
}
Salin selepas log masuk
Salin selepas log masuk

Dalam kod di atas, kemas kini keadaan untuk kiraan dan teks digabungkan bersama, mencetuskan satu pemaparan semula dan bukannya dua. Ini adalah terima kasih kepada kumpulan automatik React 18.

Mengapa Ia Penting untuk Prestasi

Bagaimana Ia Mengurangkan Re-Render yang Tidak Diperlukan

Dalam React, setiap kali keadaan berubah, pemaparan semula berlaku. Jika anda mempunyai berbilang kemas kini keadaan yang berlaku satu demi satu, seperti dalam pengendali acara, React biasanya akan mencetuskan berbilang pemaparan. Ini boleh memperlahankan apl anda, terutamanya apabila ia berskala.

Pengumpulan automatik menggabungkan kemas kini keadaan tersebut ke dalam pas render tunggal. Bayangkan jika anda mengisi borang dengan berbilang medan dan setiap perubahan input menyebabkan keseluruhan borang dipaparkan semula. Dengan kumpulan automatik, React memproses semua perubahan itu sekali gus, menjadikan UI berasa lebih lancar dan lebih pantas.

Kes Penggunaan Biasa untuk Pengumpulan Automatik

Contoh Kemas Kini Negeri dalam Pengendali dan Kesan Acara

Pengumpulan automatik berfungsi dalam banyak situasi, termasuk:

  1. Pengendali Acara: Bertindak balas kemas kini yang sudah berkumpulan dalam pengendali acara, tetapi kini ia lebih baik dalam mengendalikan berbilang kemas kini tanpa pemaparan yang tidak perlu.
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 (
    <div>
      <p>{count}</p>
      <p>{text}</p>
      <button onClick={handleClick}>Update</button>
    </div>
  );
}
Salin selepas log masuk
Salin selepas log masuk
  1. Kesan dan Fungsi Asynchronous: Dengan React 18, batching berfungsi dengan lancar di dalam kod tak segerak seperti setTimeout dan promises.
   function handleSubmit() {
     setFormSubmitted(true);
     setFormData({ ...formData, submittedAt: new Date() });
     // Only one re-render happens here
   }
Salin selepas log masuk

Ini bermakna walaupun dalam operasi async, React boleh mengumpulkan berbilang kemas kini bersama-sama, meningkatkan prestasi dan meminimumkan bilangan pemaparan semula.

Batching Manual dengan flushSync: Bila dan Mengapa Anda Perlu Menggunakannya

Apakah flushSync?

Mungkin terdapat kes di mana anda perlu mengawal secara manual apabila kemas kini keadaan berlaku, terutamanya apabila bekerja dengan animasi atau kemas kini UI kritikal. Di sinilah flushSync masuk. Ia memaksa React untuk memproses kemas kini dengan segera dan bukannya menggabungkannya dengan kemas kini lain.

Bila hendak menggunakan flushSync

Anda harus menggunakan flushSync dalam senario di mana anda perlu memastikan keadaan dikemas kini dan dicerminkan dalam DOM dengan serta-merta, dan bukannya menunggu React to batch kemas kini. Ini selalunya diperlukan dalam situasi di mana masa adalah penting, seperti animasi atau maklum balas visual segera.

Begini cara flushSync berfungsi:

   setTimeout(() => {
     setLoading(false);
     setUser({ name: 'John' });
     // These state changes are batched, so only one re-render
   }, 1000);
Salin selepas log masuk

Dalam contoh ini, React memproses kemas kini setCount serta-merta, memastikan DOM mencerminkan perubahan serta-merta, yang berguna untuk tindakan sensitif masa.

Kesimpulan: Bagaimana Batching Membantu Mengoptimumkan Prestasi Reaksi dalam Apl Moden

React 18's pengumpulan automatik ialah ciri mengubah permainan yang mengoptimumkan prestasi dengan mengurangkan pemaparan semula yang tidak perlu, menjadikan aplikasi anda berjalan lebih pantas dan lancar. Dengan mengumpulkan kemas kini keadaan ke dalam satu pemaparan, React memastikan bahawa UI apl anda kekal responsif dan cekap, walaupun ia berskala.

Untuk kebanyakan kes penggunaan, batching automatik berfungsi dengan sempurna di luar kotak, tetapi jika anda memerlukan lebih kawalan, anda boleh menggunakan flushSync untuk mengendalikan kemas kini dalam masa nyata.

Dengan memanfaatkan ciri ini, pembangun kini boleh meminimumkan pemaparan yang membazir dan meningkatkan prestasi keseluruhan apl React mereka, memastikan pengalaman pengguna yang lebih baik.


Bersedia untuk mengoptimumkan apl React anda dengan kumpulan automatik? Cuba laksanakan ciri ini dalam projek anda yang seterusnya dan lihat sejauh mana ciri ini meningkatkan prestasi apl anda!


Jika anda menyukai artikel ini, pertimbangkan untuk menyokong kerja saya:

  • Beli saya kopi
  • Tempah panggilan untuk bimbingan atau nasihat kerjaya
  • Ikuti saya di Twitter
  • Sambung di LinkedIn

Atas ialah kandungan terperinci React Automatic Batching: Cara Meminimumkan Re-Render dan Meningkatkan Prestasi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!