Глобальные переменные живут вне контроля React. Если менять их во время рендера, ломается допущение React, что рендеринг чистый. Из-за этого компоненты могут вести себя по-разному в разработке и в продакшене, ломается Fast Refresh, а приложение нельзя оптимизировать возможностями вроде компилятора React.
// ✅ Use state for countersfunctionComponent(){const[clickCount,setClickCount]=useState(0);consthandleClick=()=>{setClickCount(c=>c+1);};return(<buttononClick={handleClick}>Clicked:{clickCount}times</button>);}// ✅ Use context for global valuesfunctionComponent(){constuser=useContext(UserContext);return<div>User:{user.id}</div>;}// ✅ Synchronize external state with ReactfunctionComponent({title}){useEffect(()=>{document.title=title;// OK in effect},[title]);return<div>Page:{title}</div>;}