Junior
Jaký je rozdíl mezi props a stavem v Reactu?
sobes.tech AI
Odpověď od AI
Props (vlastnosti) a stav (state) jsou dva klíčové mechanismy pro správu dat v komponentách React.
Props:
- Jsou předávány z rodičovské komponenty do dětské.
- Jsou vnitřně v dětské komponentě neměnné (immutable).
- Umožňují vzájemnou interakci mezi komponentami.
- Určují vzhled nebo chování komponenty na základě vstupních dat.
Stav:
- Patří konkrétní komponentě a je jím řízen.
- Je měnitelný (mutable) uvnitř komponenty.
- Reprezentuje data, která se mohou časem měnit a ovlivňovat renderování komponenty.
- Změna stavu způsobí znovu vykreslení (re-render) komponenty a jejích potomků.
Hlavní rozdíly lze představit ve formě tabulky:
| Charakteristika | Props | Stav |
|---|---|---|
| Zdroj | Rodičovská komponenta | Stejná komponenta |
| Změnitelnost | Neměnné (immutable) | Měnitelné (mutable) |
| Řízení | Předává se zvenčí | Řídí se uvnitř komponenty |
| Účel | Zobrazení vnějších dat, konfigurace | Řízení vnitřního stavu |
| Změna způsobí | Překreslení při změně v rodiči | Překreslení při změně v aktuální komponentě |
Příklad použití props:
// ParentComponent.jsx
import React from 'react';
import ChildComponent from './ChildComponent';
function ParentComponent() {
const message = "Ahoj od rodiče!";
return (
<div>
<ChildComponent text={message} /> {/* Předání props "text" */}
</div>
);
}
export default ParentComponent;
// ChildComponent.jsx
import React from 'react';
function ChildComponent(props) {
return (
<p>{props.text}</p> {/* Použití props "text" */}
);
}
export default ChildComponent;
Příklad použití stavu:
// Counter.jsx
import React, { useState } from 'react';
function Counter() {
const [count, setCount] = useState(0); // Inicializace stavu "count"
const increment = () => {
setCount(count + 1); // Změna stavu
};
return (
<div>
<p>Čítač: {count}</p>
<button onClick={increment}>Zvýšit</button>
</div>
);
}
export default Counter;