⊗jsrtPmHkUTr 17 of 47 menu

Hook Optimisasi Performa useTransition di React

Hook optimisasi performa useTransition memungkinkan kita untuk memperbarui state tanpa memblokir antarmuka pengguna.

Dengan hook ini, kita dapat memberikan prioritas rendah untuk pembaruan suatu state, yang memungkinkan pembaruan state lainnya memiliki prioritas tinggi dan dieksekusi tanpa penundaan.

Sebagai contoh adalah penyaringan daftar produk dropdown saat pengguna memasukkan karakter ke dalam bidang pencarian. Tentu, daftar itu sendiri dapat ditampilkan dengan beberapa penundaan, tetapi kita tidak ingin karakter dimasukkan ke dalam bidang pencarian dengan penundaan.

Mari kita lihat bagaimana dalam kasus seperti ini hook useTransition dapat membantu kita. Anggaplah, kita memiliki potongan kode dari komponen utama. Mari kita analisis:

import { useTransition } from 'react'; import { useState } from 'react'; function App() { const [isPending, startTransition] = useTransition(); const [filterTerm, setFilterTerm] = useState(''); const filteredProducts = filterProducts(filterTerm); function updateFilterHandler(event) { startTransition(() => { setFilterTerm(event.target.value); }); } return ( <div> <input type="text" onChange={updateFilterHandler} /> <ProductList products={filteredProducts} /> </div> ); }

Di sini kita melihat dua variabel untuk useTransition. Variabel isPending berisi nilai boolean dan menunjukkan apakah proses pembaruan telah selesai, sedangkan startTransition adalah fungsi yang memungkinkan untuk menurunkan prioritas pembaruan:

const [isPending, startTransition] = useTransition();

Kita juga memiliki state filterTerm, yang menyimpan ekspresi yang dimasukkan ke dalam bidang input dan fungsi setFilterTerm untuk mengaturnya:

const [filterTerm, setFilterTerm] = useState('');

Saat karakter dimasukkan ke dalam input, fungsi updateFilterHandler dipanggil setiap waktu, di mana pembaruan filterTerm terjadi. Di sinilah kita menerapkan hook useTransition kita, dengan membungkus fungsi pengaturan setFilterTerm ke dalam startTransition sebagai berikut:

function updateFilterHandler(event) { startTransition(() => { setFilterTerm(event.target.value); }); }

Dengan demikian, kita telah menetapkan prioritas rendah untuk pembaruan state filterTerm dan bidang input kita akan tetap responsif.

Dengan menggunakan variabel isPending, kita dapat menunjukkan kepada pengguna bahwa pembaruan daftar masih dalam proses. Mari tampilkan informasi ini di bawah bidang input, selagi daftar sedang diperbarui:

return ( <div> <input type="text" onChange={updateFilterHandler} /> {isPending && <p>memperbarui ...</p>} <ProductList products={filteredProducts} /> </div> );
Indonesia
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Kami menggunakan cookie untuk operasi situs, analitik, dan personalisasi. Pemrosesan data dilakukan sesuai dengan Kebijakan Privasi.
terima semua atur tolak