Sobes.tech
Middle

Πείτε μας τις διαφορές μεταξύ ελεγχόμενων και ανεξέλεγκτων συστατικών στο React.

sobes.tech AI

Απάντηση από AI

Τα ελεγχόμενα συστατικά διαχειρίζονται την κατάσταση τους μέσω του useStatethis.state στις κλάσεις) και λαμβάνουν δεδομένα και συναρτήσεις callback μέσω των props. Η κατάσταση της φόρμας, για παράδειγμα, αποθηκεύεται στην κατάσταση του React και ενημερώνεται μέσω χειριστών onChange.

Τα ανεξέλεγκτα συστατικά αποθηκεύουν την κατάσταση τους μέσα στο DOM. Για πρόσβαση στην τιμή τους, χρησιμοποιείται το useRefReact.createRef στις κλάσεις) για να πάρει κανείς μια αναφορά στο στοιχείο DOM. Η τιμή των στοιχείων της φόρμας, για παράδειγμα, εξάγεται απευθείας από το DOM κατά την υποβολή.

Χαρακτηριστικό Ελεγχόμενο συστατικό Ανεξέλεγκτο συστατικό
Διαχείριση κατάστασης Κατάσταση React (useState) DOM
Πρόσβαση στην τιμή Μέσω κατάστασης και props Μέσω Refs (useRef)
Ενημέρωση Αντιδραστικά, σε κάθε αλλαγή Μόνο σε ρητή ενέργεια (π.χ., υποβολή)
Επικύρωση Στη λογική του React Μέσω του τυπικού HTML API ή χειροκίνητα μετά την απόκτηση της τιμής

Παράδειγμα ελεγχόμενου συστατικού:

import React, { useState } from 'react';

function ControlledInput() {
  const [value, setValue] = useState('');

  const handleChange = (event) => {
    setValue(event.target.value);
  }

  return (
    <input type="text" value={value} onChange={handleChange} />
  );
}

Παράδειγμα ανεξέλεγκτου συστατικού:

import React, { useRef } from 'react';

function UncontrolledInput() {
  const inputRef = useRef(null);

  const handleClick = () => {
    alert('Τιμή input: ' + inputRef.current.value);
  }

  return (
    <> 
      <input type="text" ref={inputRef} />
      <button onClick={handleClick}>Λήψη τιμής</button>
    </>
  );
}

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