Перейти к основному содержанию

Обзор

ReactionButton компонует Button в компактную реакцию-эмодзи со счётчиком. Ваше приложение задаёт состояние нажатия, доступное имя и обработчик изменения.

Использование

Внешний вид

Элемент управления имеет высоту 24px, скруглённые углы, эмодзи размером 16px и небольшой счётчик. Для нажатых реакций используются акцентные поверхность и текст темы. Для ненажатых реакций используются прозрачная поверхность и вторичный текст. count принимает число или строку, отформатированную вызывающей стороной. Ваше приложение отвечает за форматирование и сокращение чисел, а также за решение, отображать ли реакцию с нулевым счётчиком.

Управление состоянием

pressed является обязательным и управляется вашим приложением. Активация вызывает onPressedChange с запрошенным следующим значением. Компонент продолжает отображать переданные pressed и count, пока ваше приложение не обновит их. Установите loading, пока ожидается выполнение мутации, чтобы показать индикатор загрузки Button и предотвратить повторную активацию. Он сохраняет переданное значение pressed и помечает элемент управления как занятый. Используйте disabled, когда реакция недоступна. Выбор, счётчики, разрешения, сохранение и любые оптимистичные обновления остаются в приложении. Нативный onClick выполняется до запроса на изменение. Вызов event.preventDefault() в этом обработчике отменяет запрос. Другие нативные атрибуты кнопки, обработчики, стили, имена классов и refs передаются кнопке. Элемент управления всегда использует type="button".

Доступность и подсказки

Укажите aria-label или aria-labelledby с локализованным названием реакции. Эмодзи и счётчик являются декоративными и скрыты от вспомогательных технологий, поэтому при необходимости включите информацию о счётчике или участниках в предоставленное имя или описание. Сохраняйте название реакции неизменным при изменении её состояния; aria-pressed сообщает о выборе. Нативная кнопка поддерживает фокусировку с помощью Tab и активацию клавишами Enter или Space. И disabled, и loading предотвращают активацию. Ссылка ref указывает на нативную кнопку. Комбинируйте Tooltip для отображения сведений об участниках при наведении и фокусе с клавиатуры, как показано выше, или передайте нативный title. Содержимое подсказки задаётся вызывающей стороной и не заменяет доступное имя. Длинные доступные метки не увеличивают видимый элемент управления.

Свойства

string
Accessible name describing the reaction. Required unless aria-labelledby supplies the name.
string
ID of the element supplying the accessible name. Can be used instead of aria-label.
string | number
обязательно
Displayed count. Pass a string for localized or abbreviated formatting. Hidden from assistive technology.
boolean
по умолчанию:"false"
Disables the native button and prevents activation.
string
обязательно
Emoji displayed beside the count. Hidden from assistive technology.
boolean
по умолчанию:"false"
Shows a loading indicator, sets aria-busy, and prevents activation without changing the supplied pressed state.
MouseEventHandler<HTMLButtonElement>
Native click handler called before onPressedChange. Calling preventDefault() cancels the change request.
(pressed: boolean) => void
обязательно
Requests the next pressed state after activation. The caller updates pressed and count.
boolean
обязательно
Controlled selection state. Sets the selected appearance and aria-pressed.
string
Optional native tooltip text supplied by the caller.