Prečo React nie je reaktívny?
sobes.tech AI
Odpoveď od AI
React nie je reaktívny v klasickom zmysle reaktívneho programovania, pretože automaticky nesleduje zmeny dát a neaktualizuje UI ako reakciu na zmeny stavu bez explicitného volania.
V Reacte sa aktualizácia rozhrania vykonáva volaním funkcie setState alebo aktualizáciou stavu pomocou hookov (useState, useReducer), čo spúšťa nové renderovanie komponentu. Ide o deklaratívny prístup, ale nie je reaktívny v zmysle automatického sledovania tokov dát a ich zmien.
V reaktívnych rámcoch (napríklad Vue, Svelte, MobX) sú zmeny dát automaticky sledované a vedú k aktualizácii UI bez potreby manuálneho volania aktualizácií.
Príklad v React:
function Counter() {
const [count, setCount] = React.useState(0);
// Aktualizácia UI nastáva iba po volaní setCount
return <button onClick={() => setCount(count + 1)}>{count}</button>;
}
Tu React "nereaguje" na zmenu premennej count, ale aktualizuje UI iba po volaní setCount, čo sa líši od reaktívnych systémov, kde sa zmena premennej automaticky odráža v UI.