React bootstrap: как включить навигацию по вкладкам при использовании компонента вкладок

Я использую версию 2.4.0 react-bootstrap и компонент Tab. Я хочу, чтобы веб-сайт был доступен с помощью навигации по вкладкам, но когда я использую компонент вкладок, фокус устанавливается только на элемент активной вкладки и никогда не попадает на другие вкладки.

        <Tabs
          className = "mb-3"
          defaultActiveKey = "A"
          mountOnEnter = {true}
          unmountOnExit = {true} >
          <Tab eventKey = "A" title = "A">
            <A/>
          </Tab>
          <Tab eventKey = "B" title = "B">
            <B/>
          </Tab>
          <Tab eventKey = "C" title = "C">
            <C/>
          </Tab>
        </Tabs>

Я заметил, что когда страница отображается, все остальные вкладки (не активные) имеют tabindex = "-1" на кнопке этой вкладки, что делает их недоступными для навигации по вкладкам.

Вот как выглядит DOM после того, как react-bootstrap сгенерировал свой HTML. Вы можете видеть, что первая кнопка вкладки (активная) не имеет атрибута tabindex = "-1". Другие кнопки имеют это, поэтому, когда я использую навигацию по вкладкам, они никогда не получают фокуса, и я никогда не могу на них щелкнуть.

<ul class = "mb-3 nav-tabs nav nav-tabs" role = "tablist">
  <li class = "nav-item" role = "presentation">
      <button type = "button" id = "react-aria2325882265-4-tab-A" role = "tab" data-rr-ui-event-key = "A" aria-selected = "true" class = "nav-link active" aria-controls = "react-aria2325882265-4-tabpane-A">A</button>
   </li>
   <li class = "nav-item" role = "presentation">
       <button type = "button" id = "react-aria2325882265-4-tab-B" role = "tab" data-rr-ui-event-key = "B" aria-selected = "false" tabindex = "-1" class = "nav-link">B</button>
   </li>
   <li class = "nav-item" role = "presentation">
      <button type = "button" id = "react-aria2325882265-4-tab-C" role = "tab" data-rr-ui-event-key = "C" aria-selected = "false" class = "nav-link" tabindex = "-1">C</button>
   </li>
</ul>

Как я могу использовать компонент вкладки Bootstrap и сделать его доступным с помощью навигации по вкладкам?

Я видел, что если я использую компонент Nav, у него нет этой проблемы, потому что он не помещает tabindex = "-1" на a tag, который генерируется react-bootstrap. Однако я не могу использовать компонент Nav, потому что у меня нет ссылки для перехода, но есть компонент для рендеринга, и именно для этого используется компонент вкладки.

стандартный способ навигации с помощью клавиатуры с вкладками заключается в том, что клавиша Tab позволяет перейти только к текущей активной вкладке, а клавиши со стрелками влево/вправо затем перемещаются между вкладками. См. например mdn . Вы пробовали это?

Robin Zigmond 27.11.2022 13:47

Да! это работает спасибо! Еще одна проблема: я использую выравнивание rtl, но когда я нажимаю клавишу со стрелкой влево, выбирается вкладка справа. Вы знаете, как я могу это исправить?

orel eliyahu 27.11.2022 14:02

Боюсь, я не знаю, я вообще не знаю эту библиотеку.

Robin Zigmond 27.11.2022 14:03

Вы установили <html dir = "rtl">, как описано в документации RTL?

Andy 27.11.2022 17:13

Да, я сделал, но это не помогает. Должен ли я открыть новый вопрос об этом?

orel eliyahu 28.11.2022 08:22

Нет, я думаю, вам нужно создать запрос функции на React-Bootstrap. Это просто не поддерживается в настоящее время.

Andy 28.11.2022 11:00
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
6
447
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ожидаемое поведение вкладок в соответствии с практическими рекомендациями ARIA (APG) заключается в том, что клавиши со стрелками на клавиатуре меняют фокус внутри этого составного компонента.

В зависимости от визуального представления вкладок клавиши со стрелками влево и вправо используются для горизонтального расположения, вверх и вниз — для вертикального.

Компонент вкладок React-Bootstrap реализует клавиши со стрелками, но позволяет перемещаться по вкладкам как вверх/вниз, так и влево/вправо.

Другие вопросы по теме