Sobes.tech
Middle

Povedzte nám o rozdieloch medzi riadenými a ne riadenými komponentami v React.

sobes.tech AI

Odpoveď od AI

Riadené komponenty spravujú svoj stav pomocou useState (alebo this.state v triedach) a prijímajú dáta a funkcie spätného volania cez props. Stav formulára, napríklad, je uložený v stave React a aktualizuje sa pomocou onChange handlerov.

Neriadené komponenty ukladajú svoj stav vo vnútri DOM. Na prístup k ich hodnote sa používa useRef (alebo React.createRef v triedach) na získanie odkazu na DOM prvok. Hodnota prvkov formulára sa napríklad priamo extrahuje z DOM pri odoslaní.

Charakteristika Riadená komponenta Neriadená komponenta
Správa stavu React stav (useState) DOM
Prístup ku hodnote Cez stav a props Cez Refs (useRef)
Aktualizácia Reaktívne, pri každej zmene Pri explicitnej akcii (napr. odoslanie)
Validácia V React logike Cez štandardné HTML API alebo manuálne po získaní hodnoty

Príklad riadenej komponenty:

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

Príklad neriadenej komponenty:

import React, { useRef } from 'react';

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

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

  return (
    <> 
      <input type="text" ref={inputRef} />
      <button onClick={handleClick}>Získať hodnotu</button>
    </>
  );
}

Voľba medzi nimi závisí od zložitosti logiky a potreby okamžitej reakcie na zmeny vstupu. Riadené komponenty sú vhodnejšie pre zložité formuláre a validáciu v reálnom čase. Neriadené sú vhodné pre jednoduché formuláre alebo pre integráciu s externými DOM knižnicami.