Sobes.tech
Middle

Vertel over de verschillen tussen gecontroleerde en uncontrolled componenten in React.

sobes.tech AI

Antwoord van AI

De gecontroleerde componenten beheren hun staat via useState (of this.state in klassen) en ontvangen data en callback-functies via props. De formulierstatus wordt bijvoorbeeld opgeslagen in de React-status en bijgewerkt via onChange handlers.

De uncontrolled componenten slaan hun status op binnen de DOM. Om toegang te krijgen tot hun waarde, wordt useRef (of React.createRef in klassen) gebruikt om een referentie naar het DOM-element te krijgen. De waarde van formulier elementen wordt bijvoorbeeld direct uit de DOM gehaald bij verzending.

Kenmerk Gecontroleerde component Ongecontroleerde componenten
Statusbeheer React State (useState) DOM
Toegang tot waarde Via state en props Via Refs (useRef)
Bijwerking Reactief, bij elke wijziging Alleen bij expliciete actie (bijv. verzenden)
Validatie In React-logica Via standaard HTML API of handmatig na het verkrijgen van de waarde

Voorbeeld van een gecontroleerde component:

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} />
  );
}

Voorbeeld van een ongecontroleerde component:

import React, { useRef } from 'react';

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

  const handleClick = () => {
    alert('Waarde input: ' + inputRef.current.value);
  }

  return (
    <> 
      <input type="text" ref={inputRef} />
      <button onClick={handleClick}>Waarde ophalen</button>
    </>
  );
}

De keuze tussen hen hangt af van de complexiteit van de logica en de behoefte aan directe reactie op invoerwijzigingen. Gecontroleerde componenten zijn beter voor complexe formulieren en realtime validatie. Ongecontroleerde zijn geschikt voor eenvoudige formulieren of voor integratie met externe DOM-bibliotheken.