Rumah hujung hadapan web tutorial js Menguasai React's useRef Hook: Bekerja dengan DOM dan Nilai Boleh Berubah

Menguasai React's useRef Hook: Bekerja dengan DOM dan Nilai Boleh Berubah

Dec 19, 2024 pm 12:01 PM

Mastering React

gunakanRef Hook dalam React

Cakuk useRef ialah cangkuk React terbina dalam yang digunakan untuk mengekalkan nilai merentas pemaparan tanpa menyebabkan pemaparan semula. Ia sering digunakan untuk berinteraksi dengan elemen DOM secara langsung dan untuk menyimpan nilai yang perlu berterusan antara pemaparan tetapi tidak semestinya perlu mencetuskan pemaparan semula.


Apakah useRef?

Kail useRef digunakan terutamanya untuk dua tujuan:

  1. Mengakses elemen DOM: Ia menyediakan cara untuk merujuk nod DOM atau elemen React secara langsung, membolehkan anda berinteraksi dengannya secara penting.
  2. Nilai berterusan merentas pemaparan: Ia boleh menyimpan nilai boleh ubah yang tidak akan mencetuskan pemaparan semula apabila dikemas kini, tidak seperti keadaan.

Sintaks useRef

const myRef = useRef(initialValue);
Salin selepas log masuk
Salin selepas log masuk
  • myRef: Objek rujukan yang dicipta oleh useRef.
  • initialValue: Nilai awal untuk disimpan dalam objek rujukan. Ini boleh jadi apa sahaja, seperti nod DOM, objek atau nilai primitif.

Objek rujukan yang dikembalikan oleh useRef mempunyai sifat semasa, di mana nilai sebenar disimpan.


Cara penggunaanRef Berfungsi

  1. Mengakses Elemen DOM: Anda boleh menggunakan useRef untuk mendapatkan akses terus kepada elemen DOM dalam komponen berfungsi, sama seperti atribut ref dalam komponen kelas.
   const MyComponent = () => {
     const inputRef = useRef(null);

     const focusInput = () => {
       // Access the DOM node and focus it
       inputRef.current.focus();
     };

     return (
       <div>
         <input ref={inputRef} />
         <button onClick={focusInput}>Focus Input</button>
       </div>
     );
   };
Salin selepas log masuk
  • Di sini, inputRef digunakan untuk merujuk elemen dan fungsi fokusInput memfokus pada elemen input apabila butang diklik.
  1. Menyimpan Nilai Boleh Berubah Merentasi Render: Anda boleh menggunakan useRef untuk menyimpan nilai yang berterusan merentas pemaparan tetapi tidak mencetuskan pemaparan semula apabila diubah.
   const TimerComponent = () => {
     const countRef = useRef(0);

     const increment = () => {
       countRef.current++;
       console.log(countRef.current);  // This will log the updated value
     };

     return (
       <div>
         <p>Current count (does not trigger re-render): {countRef.current}</p>
         <button onClick={increment}>Increment</button>
       </div>
     );
   };
Salin selepas log masuk
  • Dalam contoh ini, countRef menyimpan nilai boleh ubah. Nilai boleh dikemas kini tanpa menyebabkan pemaparan semula, tidak seperti useState, yang mencetuskan pemaparan semula.

Kes Penggunaan Biasa PenggunaanRef

  1. Mengakses Elemen DOM: Contohnya, memfokuskan medan input, menatal ke elemen tertentu atau mengukur saiz elemen.
   const ScrollToTop = () => {
     const topRef = useRef(null);

     const scrollToTop = () => {
       topRef.current.scrollIntoView({ behavior: 'smooth' });
     };

     return (
       <div>
         <div ref={topRef}>



<ol>
<li>
<strong>Storing Previous State</strong>: If you need to track the previous value of a prop or state value.
</li>
</ol>

<pre class="brush:php;toolbar:false">   const PreviousState = ({ count }) => {
     const prevCountRef = useRef();

     useEffect(() => {
       prevCountRef.current = count; // Store the current value in the ref
     }, [count]);

     return (
       <div>
         <p>Current Count: {count}</p>
         <p>Previous Count: {prevCountRef.current}</p>
       </div>
     );
   };
Salin selepas log masuk
  • Penjelasan: prevCountRef menyimpan nilai kiraan sebelumnya, yang boleh diakses tanpa mencetuskan pemaparan semula.
  1. Mengelakkan Paparan Semula untuk Nilai Kompleks: Jika anda mempunyai objek besar atau struktur data kompleks yang tidak perlu mencetuskan pemaparan semula, useRef boleh menyimpannya tanpa menjejaskan komponen prestasi.

  2. Selang Penjejakan atau Tamat Masa: Anda boleh menyimpan ID tamat masa atau selang untuk mengosongkannya kemudian.

const myRef = useRef(initialValue);
Salin selepas log masuk
Salin selepas log masuk
  • Penjelasan: intervalRef menyimpan ID selang, dan ia boleh digunakan untuk mengosongkan selang apabila komponen dinyahlekap.

Perbezaan Utama Antara useRef dan useState

Ciri useRef useState
Feature useRef useState
Triggers re-render No (does not trigger a re-render) Yes (triggers a re-render when state changes)
Use Case Storing mutable values or DOM references Storing state that affects rendering
Value storage Stored in current property Stored in state variable
Persistence across renders Yes (keeps value across renders without triggering re-render) Yes (but triggers re-render when updated)
Pencetus pemaparan semula Tidak (tidak mencetuskan pemaparan semula) Ya (mencetuskan pemaparan semula apabila keadaan berubah) Kes Penggunaan Menyimpan nilai boleh ubah atau rujukan DOM Keadaan penyimpanan yang mempengaruhi pemaparan Storan nilai Disimpan dalam harta semasa Disimpan dalam pembolehubah keadaan Kegigihan merentas pemaparan Ya (mengekalkan nilai merentas pemaparan tanpa mencetuskan pemaparan semula) Ya (tetapi mencetuskan pemaparan semula apabila dikemas kini)

Contoh: Menggunakan useRef untuk Pengesahan Borang

Berikut ialah contoh di mana useRef digunakan untuk pengesahan borang, memfokuskan pada medan input apabila ia tidak sah.

import React, { useRef, useState } daripada 'react';

const FormComponent = () => {
  const inputRef = useRef();
  const [inputValue, setInputValue] = useState('');
  const [ralat, setError] = useState('');

  const validateInput = () => {
    jika (inputValue === '') {
      setError('Input tidak boleh kosong');
      inputRef.current.focus(); // Fokuskan elemen input
    } lain {
      setError('');
    }
  };

  kembali (
    <div>
      <masukan
        ref={inputRef}
        type="text"
        value={inputValue}
        onChange={(e) => setInputValue(e.target.value)}
      />
      {ralat && <p>



Salin selepas log masuk
  • Penjelasan:
    • InputRef digunakan untuk memfokus pada elemen input jika nilai input kosong.
    • Fungsi ini tidak akan dapat dilakukan dengan useState kerana memfokuskan pada elemen DOM memerlukan akses terus kepada elemen, yang tidak dapat diberikan oleh useState.

Ringkasan penggunaanRef Hook

  • useRef digunakan untuk menyimpan rujukan kepada elemen DOM dan nilai boleh ubah yang tidak mencetuskan pemaparan semula apabila dikemas kini.
  • Ia berguna untuk mengakses nod DOM secara langsung (cth., untuk memfokus, menatal atau animasi).
  • useRef juga berguna untuk menyimpan nilai yang berterusan merentas pemaparan tanpa perlu mencetuskan pemaparan semula, seperti menjejak nilai sebelumnya atau menyimpan ID tamat masa/selang.
  • Perbezaan Utama: Tidak seperti useState, mengemas kini useRef tidak mencetuskan pemaparan semula.

Kesimpulan

Kail useRef sangat berguna untuk menangani nilai boleh ubah dan manipulasi DOM langsung dalam React. Sama ada anda bekerja dengan elemen borang, menjejaki keadaan sebelumnya atau berinteraksi dengan perpustakaan pihak ketiga, useRef menyediakan penyelesaian yang bersih dan cekap. Dengan menggunakan useRef, anda boleh mengekalkan kegigihan tanpa mencetuskan pemaparan semula yang tidak perlu, yang menjadikannya pilihan terbaik untuk operasi sensitif prestasi.


Atas ialah kandungan terperinci Menguasai React's useRef Hook: Bekerja dengan DOM dan Nilai Boleh Berubah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1673
14
Tutorial PHP
1278
29
Tutorial C#
1257
24
Python vs JavaScript: Keluk Pembelajaran dan Kemudahan Penggunaan Python vs JavaScript: Keluk Pembelajaran dan Kemudahan Penggunaan Apr 16, 2025 am 12:12 AM

Python lebih sesuai untuk pemula, dengan lengkung pembelajaran yang lancar dan sintaks ringkas; JavaScript sesuai untuk pembangunan front-end, dengan lengkung pembelajaran yang curam dan sintaks yang fleksibel. 1. Sintaks Python adalah intuitif dan sesuai untuk sains data dan pembangunan back-end. 2. JavaScript adalah fleksibel dan digunakan secara meluas dalam pengaturcaraan depan dan pelayan.

JavaScript dan Web: Fungsi teras dan kes penggunaan JavaScript dan Web: Fungsi teras dan kes penggunaan Apr 18, 2025 am 12:19 AM

Penggunaan utama JavaScript dalam pembangunan web termasuk interaksi klien, pengesahan bentuk dan komunikasi tak segerak. 1) kemas kini kandungan dinamik dan interaksi pengguna melalui operasi DOM; 2) pengesahan pelanggan dijalankan sebelum pengguna mengemukakan data untuk meningkatkan pengalaman pengguna; 3) Komunikasi yang tidak bersesuaian dengan pelayan dicapai melalui teknologi Ajax.

JavaScript in Action: Contoh dan projek dunia nyata JavaScript in Action: Contoh dan projek dunia nyata Apr 19, 2025 am 12:13 AM

Aplikasi JavaScript di dunia nyata termasuk pembangunan depan dan back-end. 1) Memaparkan aplikasi front-end dengan membina aplikasi senarai TODO, yang melibatkan operasi DOM dan pemprosesan acara. 2) Membina Restfulapi melalui Node.js dan menyatakan untuk menunjukkan aplikasi back-end.

Memahami Enjin JavaScript: Butiran Pelaksanaan Memahami Enjin JavaScript: Butiran Pelaksanaan Apr 17, 2025 am 12:05 AM

Memahami bagaimana enjin JavaScript berfungsi secara dalaman adalah penting kepada pemaju kerana ia membantu menulis kod yang lebih cekap dan memahami kesesakan prestasi dan strategi pengoptimuman. 1) aliran kerja enjin termasuk tiga peringkat: parsing, penyusun dan pelaksanaan; 2) Semasa proses pelaksanaan, enjin akan melakukan pengoptimuman dinamik, seperti cache dalam talian dan kelas tersembunyi; 3) Amalan terbaik termasuk mengelakkan pembolehubah global, mengoptimumkan gelung, menggunakan const dan membiarkan, dan mengelakkan penggunaan penutupan yang berlebihan.

Python vs JavaScript: Komuniti, Perpustakaan, dan Sumber Python vs JavaScript: Komuniti, Perpustakaan, dan Sumber Apr 15, 2025 am 12:16 AM

Python dan JavaScript mempunyai kelebihan dan kekurangan mereka sendiri dari segi komuniti, perpustakaan dan sumber. 1) Komuniti Python mesra dan sesuai untuk pemula, tetapi sumber pembangunan depan tidak kaya dengan JavaScript. 2) Python berkuasa dalam bidang sains data dan perpustakaan pembelajaran mesin, sementara JavaScript lebih baik dalam perpustakaan pembangunan dan kerangka pembangunan depan. 3) Kedua -duanya mempunyai sumber pembelajaran yang kaya, tetapi Python sesuai untuk memulakan dengan dokumen rasmi, sementara JavaScript lebih baik dengan MDNWebDocs. Pilihan harus berdasarkan keperluan projek dan kepentingan peribadi.

Python vs JavaScript: Persekitaran dan Alat Pembangunan Python vs JavaScript: Persekitaran dan Alat Pembangunan Apr 26, 2025 am 12:09 AM

Kedua -dua pilihan Python dan JavaScript dalam persekitaran pembangunan adalah penting. 1) Persekitaran pembangunan Python termasuk Pycharm, Jupyternotebook dan Anaconda, yang sesuai untuk sains data dan prototaip cepat. 2) Persekitaran pembangunan JavaScript termasuk node.js, vscode dan webpack, yang sesuai untuk pembangunan front-end dan back-end. Memilih alat yang betul mengikut keperluan projek dapat meningkatkan kecekapan pembangunan dan kadar kejayaan projek.

Peranan C/C dalam JavaScript Jurubah dan Penyusun Peranan C/C dalam JavaScript Jurubah dan Penyusun Apr 20, 2025 am 12:01 AM

C dan C memainkan peranan penting dalam enjin JavaScript, terutamanya digunakan untuk melaksanakan jurubahasa dan penyusun JIT. 1) C digunakan untuk menghuraikan kod sumber JavaScript dan menghasilkan pokok sintaks abstrak. 2) C bertanggungjawab untuk menjana dan melaksanakan bytecode. 3) C melaksanakan pengkompil JIT, mengoptimumkan dan menyusun kod hot-spot semasa runtime, dan dengan ketara meningkatkan kecekapan pelaksanaan JavaScript.

Python vs JavaScript: Gunakan Kes dan Aplikasi Membandingkan Python vs JavaScript: Gunakan Kes dan Aplikasi Membandingkan Apr 21, 2025 am 12:01 AM

Python lebih sesuai untuk sains data dan automasi, manakala JavaScript lebih sesuai untuk pembangunan front-end dan penuh. 1. Python berfungsi dengan baik dalam sains data dan pembelajaran mesin, menggunakan perpustakaan seperti numpy dan panda untuk pemprosesan data dan pemodelan. 2. Python adalah ringkas dan cekap dalam automasi dan skrip. 3. JavaScript sangat diperlukan dalam pembangunan front-end dan digunakan untuk membina laman web dinamik dan aplikasi satu halaman. 4. JavaScript memainkan peranan dalam pembangunan back-end melalui Node.js dan menyokong pembangunan stack penuh.

See all articles