Sobes.tech
Junior

Aký je rozdiel medzi props a stavom v Reacte?

sobes.tech AI

Odpoveď od AI

Propse (props) a stav (state) sú dva kľúčové mechanizmy na riadenie údajov v komponentoch React.

Propse:

  • Prenášajú sa od rodičovského k komponentu dieťaťa.
  • Sú nemeniteľné (immutable) vnútri dieťaťa.
  • Umožňujú komponentom navzájom komunikovať.
  • Určujú vzhľad alebo správanie komponentu na základe vstupných údajov.

Stav:

  • Patrí konkrétnemu komponentu a je ním riadený.
  • Je meniteľný (mutable) vnútri komponentu.
  • Predstavuje údaje, ktoré sa môžu meniť v čase a ovplyvňovať renderovanie komponentu.
  • Zmena stavu spôsobí opätovné renderovanie komponentu a jeho potomkov.

Hlavné rozdiely možno predstaviť vo forme tabuľky:

Charakteristika Propse Stav
Zdroj Rodičovský komponent Sám komponent
Meniteľnosť Nemeniteľné Meniteľný
Riadenie Prenášajú sa zvonku Riadi sa vnútri komponentu
Účel Zobrazenie údajov zvonku, nastavenie Riadenie vnútorného stavu komponentu
Zmena spôsobí Opätovné renderovanie pri zmene v rodičovi Opätovné renderovanie pri zmene v aktuálnom komponente

Príklad použitia propov:

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

function ParentComponent() {
  const message = "Ahoj od rodiča!";
  return (
    <div>
      <ChildComponent text={message} /> {/* Prenos prop "text" */}
    </div>
  );
}

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

function ChildComponent(props) {
  return (
    <p>{props.text}</p> {/* Použitie prop "text" */}
  );
}

export default ChildComponent;

Príklad použitia stavu:

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

function Counter() {
  const [count, setCount] = useState(0); // Inicializácia stavu "count"

  const increment = () => {
    setCount(count + 1); // Zmena stavu
  };

  return (
    <div>
      <p>Počítadlo: {count}</p>
      <button onClick={increment}>Zvýšiť</button>
    </div>
  );
}

export default Counter;