⊗jsrtPmHkURD 13 of 47 menu

Χρήση του useRef Hook για DOM στο React

Σε ένα από τα προηγούμενα μαθήματα αναφέραμε, ότι τα refs χρησιμοποιούνται πιο συχνά για πρόσβαση σε στοιχεία DOM.

Τα refs θα έρθουν σε βοήθεια όταν, για παράδειγμα, χρειαστεί να εστιάσετε σε ένα στοιχείο, να κάνετε κύλιση ή να υπολογίσετε το μέγεθός του και τη θέση του, ή ίσως να χρησιμοποιήσετε ορισμένες από τις μεθόδους ή τις ιδιότητές του, αφού για τέτοια πράγματα δεν υπάρχουν ενσωματωμένες μέθοδοι στο React.

Ας δούμε σε ένα παράδειγμα με input, πώς γίνεται αυτό. Ας δημιουργήσουμε ένα component με input και ένα κουμπί:

return ( <div> <input /> <button>focus</button> </div> );

Αρχικά, ας εισάγουμε στο component useRef:

import { useRef } from 'react';

Και ας δημιουργήσουμε ένα ref ref στο component. Ας το αρχικοποιήσουμε με την τιμή null:

const ref = useRef(null);

Ας προσθέσουμε στο κουμπί έναν χειριστή κλικ:

<button onClick={handleClick}>focus</button>

Για να έχουμε πρόσβαση στο input, ας γράψουμε το ref ref μας στο χαρακτηριστικό ref του input. Έτσι, όταν το React δημιουργεί τον DOM κόμβο για αυτό το input, θα τοποθετήσει μια αναφορά σ' αυτόν στο ref.current και θα μπορούμε να χρησιμοποιούμε τις μεθόδους του input:

<input ref={ref} />

Και τελικά, ας προσθέσουμε τη συνάρτηση χειρισμού κλικ, ώστε όταν γίνει κλικ στο κουμπί, στο input να εστιάζεται. Τώρα μπορούμε να το κάνουμε αυτό μέσω του ref, στον οποίο βρίσκεται η αναφορά στο input μας, προσπελάζοντας τη μέθοδό του focus:

function handleClick() { ref.current.focus(); }

Πατήστε το κουμπί και βεβαιωθείτε ότι εστιάζεται στο input.

Πάρτε τον κώδικα του component App, που γράψαμε σε αυτό το μάθημα και κάντε το έτσι ώστε με το κλικ στο κουμπί στο input, εκτός από την εστίαση, να γίνεται και εκκαθάριση του πεδίου εισαγωγής. Χρησιμοποιήστε για αυτό την ιδιότητα value του input.

Ελληνικά
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Χρησιμοποιούμε cookie για τη λειτουργία του ιστότοπου, την ανάλυση και την εξατομίκευση. Η επεξεργασία των δεδομένων γίνεται σύμφωνα με την Πολιτική Απορρήτου.
αποδοχή όλων ρύθμιση απόρριψη