Часто передо мной стоит задача использовать материальные иконки и превратить их в интерактивные кнопки. Например, может быть значок, при нажатии на который отображается текст и он вращается. При повторном нажатии он возвращается в исходное положение, и текст исчезает.
<div onClick={toggleButton()}>
<i
role="toggle button"
aria-pressed="true"
alt="Toggle text"
class="material-icons"
>
toggle_off
</i>
Random text...
</div>
<div onClick={toggleButton()}>
<i
role="toggle button"
aria-pressed="true"
alt="Toggle text"
class="material-icons"
>
toggle_on
</i>
</div>
-an if conditional would render either of these divs based on pressed or not pressed
Обычно я обрабатываю эту кнопку, добавляя роль, состояние арии и замещающий текст к значку материала и изменяя состояние арии при нажатии. Однако я всегда чувствую, что, возможно, делаю это не так эффективно, как должен.
Каков правильный способ сделать что-то вроде значка, используемого в качестве кнопки-переключателя, доступным?
(Я знаю, что наилучшей практикой для WCAG (веб-доступность) является использование компонента кнопки, но из-за уникальной природы материальных значков это невозможно.)