Русский
Открыть в Telegram

ПостУправление фокусом в React с помощью flushSync

27 мая 2025
З
Заметки про React
Ссылка
нажмите — покажем
Управление фокусом в React с помощью flushSync Установить фокус на инпуте сразу в React может оказаться не так просто, как кажется. При изменении стейта, React не сразу ре-рендерит компонент, а вместо этого он складывает в очередь все изменения состояний и выполняет их разом после завершения работы обработчика событий. Из-за такого поведения могут возникнуть непредвиденные ситуации, например: function MyComponent() { const inputRef = useRef<HTMLInputElement>(null) const [show, setShow] = useState(false) return ( <div> <button onClick={() => { setShow(true) inputRef.current?.focus() // Фокус не будет работать }} > Show </button> {show ? <input ref={inputRef} /> : null} </div> ) } В примере выше фокс на инпуте не появится, из-за того что изменение стейта setShow сработает только по завершению работы обработчика события onClick. Для решения проблемы используйте функцию flushSync, которая синхронно выполняет изменение стейта в переданном колбеке. По завершению работы flushSync DOM будет обновлен и inputRef.current?.focus() сработает. Обновленный пример обработчика: … <button onClick={() => { flushSync(() => { setShow(true) }) inputRef.current?.focus() }} > … https://www.epicreact.dev/mastering-focus-management-in-react-with-flush-sync-f5b38
45 · 2.8K ·

Рядом в ленте

ЗЗаметки про ReactРодители и владельцы в React: провайдеры контекста Джулс Блом в своем блоге написала про то, что понимание того, как компоненты-родители (parent) и компоненты-вЗЗаметки про ReactTanStack DB TanStack представила новую библиотеку – TanStack DB – реактивный клиентский стор, с возможностью синка API запросов. Библиотека работает поверх TanS
это сообщение
ЗЗаметки про ReactАнонс TypeScript Native Вышла превью версия TypeScript написанная на Go. Ее можно установить через npm: npm install -D @typescript/native-preview Этот пакет преЗЗаметки про ReactПочему Error Boundary, а не просто try/catch для компонентов В React нельзя использовать try/catch чтобы отловить ошибки рендера компонента. Это связано с тем,
ЗЗаметки про ReactЗаметки про React@ru_react_notes · канал · Технологии
3 412подписчиков491постов в индексе
Лента площадки Открыть в Telegram

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Границы индекса · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем