Для чего нужен `useState` и как он работает?
- Создаёт локальное состояние в функциональном компоненте
- Обновление: setState(newValue) или setState(prev => computeNext(prev))
- setState асинхронен из-за batching
- React использует Object.is для сравнения — если значение не изменилось, ререндер не произойдёт
- Ленивая инициализация: useState(() => computeExpensiveInitial())