Sobes.tech
Middle

Պատմեք React-ում կառավարելի և ոչ կառավարելի կոմպոնենտների տարբերությունների մասին։

sobes.tech AI

Պատասխան AI-ից

Կառավարվող կոմպոնենտները կառավարում են իրենց վիճակը useState (կամ դասական this.state) միջոցով և ստանում են տվյալները և վերականգնման ֆունկցիաները որպես ատրիբուտներ։ Օրինակ, ձևի վիճակը պահվում է React-ի վիճակում և թարմացվում է onChange handlers-ով։

Անկառավարվող կոմպոնենտները պահում են իրենց վիճակը DOM-ի ներսում։ Դրանց արժեքին հասնելու համար օգտագործվում է useRef (կամ դասական React.createRef), որը տալիս է հղում DOM տարրին։ Օրինակ, ձևի տարրերի արժեքը ստացվում է ուղղակիորեն DOM-ից սուբմիտ ժամանակ։

Գծագիր Կառավարվող կոմպոնենտ Անկառավարվող կոմպոնենտ
Վիճակի կառավարում React State (useState) DOM
Արժեքին հասու լինել Կառավարում և ատրիբուտներով 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('Մուտքի արժեքը՝ ' + inputRef.current.value);
  }

  return (
    <>
      <input type="text" ref={inputRef} />
      <button onClick={handleClick}>Արդյունքը ստանալ</button>
    </>
  );
}

Նրանց միջև ընտրությունը կախված է լոգիկայի բարդությունից և անհրաժեշտությունից՝ անմիջական արձագանք փոփոխություններին։ Կառավարվող կոմպոնենտները նախընտրելի են բարդ ձևանմուշների և իրական ժամանակում վալիդացիայի համար։ Անկառավարվող կոմպոնենտները հարմար են պարզ ձևանմուշների կամ երրորդ կողմի DOM գրադարանների ինտեգրման համար։