⊗jsrtPmHkUTr 17 of 47 menu

Hook Pengoptimuman Prestasi useTransition dalam React

Hook pengoptimuman prestasi useTransition membolehkan kita mengemaskini state tanpa menyekat antara muka grafik.

Dengan hook ini, kita boleh menetapkan kemaskini sesuatu state keutamaan rendah, yang membolehkan kemaskini state lain mempunyai keutamaan tinggi dan dilaksanakan tanpa kelewatan.

Sebagai contoh, kita boleh mengambil penapisan senarai juntai bawah produk semasa pengguna memasukkan aksara dalam medan carian. Sudah tentu, senarai itu sendiri mungkin dipaparkan dengan beberapa kelewatan, tetapi kita tidak mahu aksara dimasukkan ke dalam medan carian dengan kelewatan.

Mari kita lihat bagaimana dalam kes sedemikian hook useTransition boleh membantu kita. Katakan, kita mempunyai sepotong kod komponen utama. Mari kita analisisnya:

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 pembolehubah untuk useTransition. Pembolehubah isPending mengandungi nilai boolean dan menunjukkan sama ada proses kemaskini telah selesai, manakala startTransition ialah fungsi yang membolehkan pengurangan keutamaan kemaskini:

const [isPending, startTransition] = useTransition();

Kami juga mempunyai state filterTerm, di mana ungkapan yang dimasukkan ke dalam medan input disimpan, dan fungsi setFilterTerm untuk menetapkannya:

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

Apabila aksara dimasukkan ke dalam input, kami setiap kali memanggil fungsi updateFilterHandler, di mana kemaskini filterTerm berlaku. Di sinilah kami menggunakan hook kami useTransition, dengan membungkus fungsi penetapan setFilterTerm dalam startTransition seperti berikut:

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

Dengan itu, kami telah menetapkan untuk kemaskini state filterTerm sebagai rendah keutamaan dan medan input kami akan kekal responsif.

Melalui pembolehubah isPending, kami boleh menunjukkan kepada pengguna bahawa kemaskini senarai masih dalam proses. Mari paparkan maklumat ini di bawah medan input, semasa senarai dikemaskini:

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