Sobes.tech
Middle

Papaskinkite apie skirtumus tarp valdomų ir nevaldomų komponentų React'e.

sobes.tech AI

Atsakymas iš AI

Valdomi komponentai valdo savo būseną naudodami useState (arba klasės this.state) ir gauna duomenis bei atgalinius iškvietimus per props. Pavyzdžiui, formos būsena saugoma React būsenos ir atnaujinama per onChange įvykius.

Nepavaldi komponentai saugo savo būseną DOM viduje. Jiems prieiti naudojamas useRef (arba klasės React.createRef), kuris leidžia gauti nuorodą į DOM elementą. Pavyzdžiui, formos elementų reikšmė tiesiogiai išgaunama iš DOM submit metu.

Savybė Valdomas komponentas Nepavaldi komponentas
Būsenos valdymas React State (useState) DOM
Reikšmės prieiga Per state ir props Per Refs (useRef)
Atnaujinimas Reaktyvus, kiekvieno pakeitimo metu Per aiškų veiksmą (pvz., submit)
Validacija React logikoje Per standartinį HTML API arba rankiniu būdu po reikšmės gavimo

Valdomo komponento pavyzdys:

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

Nepavaldi komponento pavyzdys:

import React, { useRef } from 'react';

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

  const handleClick = () => {
    alert('Reikšmė įvestyje: ' + inputRef.current.value);
  }

  return (
    <>
      <input type="text" ref={inputRef} />
      <button onClick={handleClick}>Gauti reikšmę</button>
    </>
  );
}

Pasirinkimas tarp jų priklauso nuo logikos sudėtingumo ir poreikio greitai reaguoti į įvesties pokyčius. Valdomi komponentai yra tinkamesni sudėtingoms formoms ir realaus laiko validacijai. Nepavaldi komponentai yra patogesni paprastoms formoms arba integracijai su trečiųjų šalių DOM bibliotekomis.