Компонент Image в библиотеке Radix UI
предназначен для корректного отображения изображений с поддержкой
контроля состояния загрузки и падений контента. Он позволяет управлять
отображением изображения и обеспечивать резервное содержимое в случае
ошибок загрузки.
Пример использования:
import * as Image from '@radix-ui/react-image';
<Image.Root>
<Image.Img src="/avatar.png" alt="Аватар пользователя" width={120} height={120} />
</Image.Root>
Обработка состояния загрузки В Radix UI
Image не просто отображает картинку, но и отслеживает её
состояние: загружено ли изображение, возникла ли ошибка. Это позволяет
динамически отображать заглушки или анимации загрузки.
Адаптивность и контроль размеров Использование
width и height обеспечивает корректное
резервирование пространства на странице, предотвращая «скачки» контента
при асинхронной загрузке.
Доступность Атрибут alt обязателен
для всех изображений, которые несут смысловую нагрузку. Для декоративных
изображений можно использовать пустую строку alt="", чтобы
скринридеры игнорировали их.
Fallback — это дочерний компонент
Image.Root, который отображается, если изображение не
удалось загрузить или оно отсутствует. Он обеспечивает визуальное
резервирование и улучшает UX при нестабильных сетевых условиях.
Пример использования с Fallback:
<Image.Root>
<Image.Img src="/avatar.png" alt="Аватар пользователя" width={120} height={120} />
<Image.Fallback delayMs={300}>
<div style={{ width: 120, height: 120, backgroundColor: '#eee', display: 'flex', alignItems: 'center', justifyContent: 'center' }}>
Загрузка...
</div>
</Image.Fallback>
</Image.Root>
Задержка отображения Атрибут
delayMs помогает предотвратить ненужное появление Fallback
на короткий момент при нормальной загрузке изображения.
Гибкость содержимого Fallback поддерживает любые React-элементы: можно использовать SVG-иконки, CSS-анимации или даже другие Radix UI компоненты для создания кастомного резервного интерфейса.
Компоновка и стилизация Fallback наследует
размер контейнера Image.Root, что позволяет аккуратно
интегрировать его в макет без дополнительного позиционирования.
alt для семантических
изображений.width и height для
предотвращения смещения контента.Fallback с delayMs для
улучшения визуального восприятия при медленной загрузке.<Image.Root>
<Image.Img
src="/profile.png"
alt="Профиль пользователя"
width={150}
height={150}
onEr ror={() => console.log('Ошибка загрузки изображения')}
/>
<Image.Fallback delayMs={500}>
<div style={{ width: 150, height: 150, backgroundColor: '#ccc', display: 'flex', alignItems: 'center', justifyContent: 'center', fontSize: 14 }}>
Нет изображения
</div>
</Image.Fallback>
</Image.Root>
Такой подход обеспечивает надежное отображение изображений, управление состояниями загрузки и элегантное резервное содержимое в случае ошибок, что делает интерфейсы более стабильными и доступными.