Как корректно реализовать переключение булевого состояния showInfo по клику, чтобы блок и открывался, и закрывался?

В React используйте функциональное обновление: setShowInfo(previous => !previous).

Короткий ответ

Что ответить на собеседовании

В React используйте функциональное обновление: setShowInfo(previous => !previous).

Подробный разбор

Ответ с пояснениями

В React используйте функциональное обновление: setShowInfo(previous => !previous).

Например, <button onClick={() => setShowInfo(v => !v)}>Подробнее</button> и {showInfo && <Info />}. Так каждый клик опирается на актуальное предыдущее состояние; постоянная запись true открывает блок, но не позволяет закрыть его.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее