Sobes.tech
Middle

Pastāstiet par atšķirībām starp kontrolētajiem un nekontrolētajiem komponentiem React.

sobes.tech AI

Atbilde no AI

Pārvaldāmās komponentes pārvalda savu stāvokli, izmantojot useState (vai klases this.state) un saņem datus un atpakaļzvanus caur props. Piemēram, formas stāvoklis tiek glabāts React stāvoklī un tiek atjaunināts ar onChange notikumiem.

Nepārvaldāmās komponentes glabā savu stāvokli DOM iekšienē. Tām piekļūt izmanto useRef (vai klases React.createRef), kas ļauj iegūt atsauci uz DOM elementu. Piemēram, formu elementu vērtības tieši tiek iegūtas no DOM sūtot.

Īpašība Pārvaldāma komponenta Nepārvaldāma komponenta
Stāvokļa pārvaldība React State (useState) DOM
Pieeja vērtībai Caurest un props Caurest (useRef)
Atjaunināšana Reaģējoši, katru izmaiņu laikā Ar skaidru darbību (piem., sūdzība)
Validācija React loģikā Standarta HTML API vai manuāli pēc vērtības saņemšanas

Pārvaldāmas komponentes piemērs:

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

Nepārvaldāmas komponentes piemērs:

import React, { useRef } from 'react';

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

  const handleClick = () => {
    alert('Vērtība ievadā: ' + inputRef.current.value);
  }

  return (
    <>
      <input type="text" ref={inputRef} />
      <button onClick={handleClick}>Saņemt vērtību</button>
    </>
  );
}

Izvēle starp tām ir atkarīga no loģikas sarežģītības un nepieciešamības ātri reaģēt uz ievades izmaiņām. Pārvaldāmās komponentes ir piemērotākas sarežģītām formām un reāllaika validācijai. Nepārvaldāmās komponentes ir ērti piemērotas vienkāršām formām vai integrācijai ar trešo pušu DOM bibliotēkām.