Sobes.tech
Junior

Kuo skiriasi props ir būsena React?

sobes.tech AI

Atsakymas iš AI

Propai (props) ir būdas valdyti duomenis React komponentuose, taip pat būdas valdyti būseną (state).

Propai:

  • perduodami iš tėvinio komponento į vaikų komponentą.
  • yra nekintami (immutable) vaikų komponento viduje.
  • leidžia komponentams sąveikauti tarpusavyje.
  • apibrėžia išorės duomenų išvaizdą arba elgesį remiantis įvestais duomenimis.

Būsena:

  • priklauso konkrečiam komponentui ir yra valdomas juo.
  • yra keičiama (mutable) komponento viduje.
  • atstovauja duomenis, kurie gali keistis laikui bėgant ir turėti įtakos komponento atvaizdavimui.
  • būsenos keitimas sukelia komponento ir jo palikuonių perrėžimą.

Pagrindiniai skirtumai gali būti pateikti lentelės pavidalu:

Savybė Propai Būsena
Šaltinis Tėvinis komponentas Pats komponentas
Keičiamumas Nekintami (immutable) Keičiamas (mutable)
Valdymas Perduodami iš išorės Valdomi viduje komponento
Paskirtis Išorės duomenų atvaizdavimas, nustatymai Vidinio būsenos valdymas
Keitimas sukelia Perkrovimą keičiant tėvą Perkrovimą keičiant šiuo komponentu

Pavyzdys, kaip naudoti propus:

// ParentComponent.jsx
import React from 'react';
import ChildComponent from './ChildComponent';

function ParentComponent() {
  const message = "Sveiki iš tėvo!";
  return (
    <div>
      <ChildComponent text={message} /> {/* Prop "text" perdavimas */}
    </div>
  );
}

export default ParentComponent;
// ChildComponent.jsx
import React from 'react';

function ChildComponent(props) {
  return (
    <p>{props.text}</p> {/* Prop "text" naudojimas */}
  );
}

export default ChildComponent;

Pavyzdys, kaip naudoti būseną:

// Counter.jsx
import React, { useState } from 'react';

function Counter() {
  const [count, setCount] = useState(0); // Būsenos "count" inicializavimas

  const increment = () => {
    setCount(count + 1); // Būsenos keitimas
  };

  return (
    <div>
      <p>Skaitiklis: {count}</p>
      <button onClick={increment}>Padidinti</button>
    </div>
  );
}

export default Counter;