Сценарий
Я использую библиотеку Reactour для создания руководства на моем веб-сайте.Библиотека позволяет мне взаимодействовать с выделенными компонентами, что является желаемым поведением.Однако в моих полях ввода есть атрибут onBlur
, который обновляет состояние в родительском компоненте, таким образом повторно визуализируя дочерний элемент (компонент, в котором находятся поля ввода).
Проблема
проблема в том, что этот повторный рендеринг испортил focus
, и пользователь не может «переходить» между полями (когда учебник открыт).Похоже, что компонент Reactour получает фокус после повторного рендеринга, хотя в его компоненте по умолчанию установлено значение tabIndex="-1"
.
Мой подход
Я пытался установить явноеtabIndex
свойств, но это не сработало.
Я думал о прослушивателе onKeyDown
, проверьте, нажата ли клавиша tab , и "вручную" управляйте focus
между полями, но это кажется слишком странным и грязным, учитывая, что в моей форме много полей.
Я сделал CodeSandbox здесь , чтобы воспроизвести ошибку.Вы заметите, что можете переключаться между входами, когда Учебное пособие закрыто, но нажатие кнопки «Начать тур» испортит поведение tabIndex
.
Есть идеи?