Архитектура фронтенда
Доступные формы: свободное воспроизведение
Воспроизведение по памяти сильнее перечитывания. Для каждого вопроса проговорите или запишите полный ответ из памяти, прежде чем открыть модельный, — именно усилие припоминания закрепляет дисциплину «пути клавиатуры».
Восстановите хребет юнита — связь label, озвучивание ошибок, фокус на первом невалидном поле, native против ARIA и то, что вы наследуете при preventDefault, — не заглядывая обратно в урок.
- 01Что значит, что label программно связан, и почему placeholder ему не замена?
- 02Почему визуальная подсветка невалидных полей красным ничего не озвучивает для screen reader, и какое двухчастное исправление делает ошибки воспринимаемыми?
- 03На неудачном submit с кастомной валидацией почему перемещение фокуса — самый результативный шаг, и куда должен идти фокус?
- 04Нативная constraint validation делает фокус, прокрутку и пузырёк ошибки бесплатно. Что именно вы наследуете в момент вызова e.preventDefault()?
- 05Почему контрол на div — баг хуже отсутствующего label, и что на самом деле даёт «использовать нативный элемент»?
- 06Является ли controlled-vs-uncontrolled решением о доступности в React? Объясните связь.
Если вы смогли восстановить каждый ответ по памяти, вы держите хребет юнита: каждому контролу нужно программно связанное имя (placeholder им не является, и треть веба это проваливает); ошибки должны озвучиваться через уже существующий live-регион и быть привязаны к полю через aria-invalid + aria-describedby и сформулированы как подсказки; неудачный submit должен переместить фокус на первое невалидное поле, а не просто прокрутить; нативные элементы несут role, фокусируемость и обработку клавиатуры, которые нельзя полностью воспроизвести; в момент preventDefault вы наследуете всё это; а controlled-vs-uncontrolled — это решение о состоянии, ортогональное доступности.