Skeleton — это компонент, предназначенный для отображения временной загрузки контента. Он позволяет показывать пользователю место будущего элемента интерфейса, создавая ощущение плавной загрузки и улучшая восприятие производительности приложения. В Chakra UI Skeleton реализован с гибкой кастомизацией и высокой интеграцией с другими компонентами библиотеки.
Самый простой способ использования Skeleton — это создание базового блока-заполнителя:
import { Skeleton } from "@chakra-ui/react";
<Skeleton height="20px" width="200px" />
Здесь height и width задают размеры скелетона, имитируя будущий контент. Этот подход подходит для текстовых элементов, кнопок и блоков интерфейса.
По умолчанию Skeleton в Chakra UI поддерживает анимацию “pulsing”, создающую эффект мерцания:
<Skeleton height="20px" width="200px" speed={1.5} />
<Skeleton
height="20px"
width="200px"
startColor="gray.200"
endColor="gray.400"
/>
Для имитации текста удобно использовать компонент SkeletonText, который автоматически генерирует несколько линий скелетона:
import { SkeletonText } from "@chakra-ui/react";
<SkeletonText mt="4" noOfLines={3} spacing="4" />
SkeletonText хорошо подходит для блоков новостей, описаний, параграфов или постов.
Для аватаров, иконок или любых круглых элементов применяется SkeletonCircle:
import { SkeletonCircle } from "@chakra-ui/react";
<SkeletonCircle size="12" />
Skeleton может быть условно показан в зависимости от состояния загрузки данных с помощью свойства isLoaded:
<Skeleton isLoaded={dataLoaded}>
<Box height="20px" width="200px">
{data}
</Box>
</Skeleton>
isLoaded принимает boolean:
false — показывается Skeleton.true — отображается настоящий контент.Это позволяет использовать Skeleton как обертку вокруг любого компонента, управляя визуализацией загрузки.
Skeleton легко интегрируется с Layout-компонентами Chakra UI, такими как Box, Flex, Stack. Например, создание списка карточек с Skeleton:
<Stack spacing="4">
{[...Array(3)].map((_, index) => (
<Skeleton key={index} height="100px" borderRadius="md" />
))}
</Stack>
Skeleton поддерживает стандартные свойства Chakra UI для стилизации:
Пример стилизованного скелетона:
<Skeleton
height="50px"
width="50%"
borderRadius="lg"
startColor="pink.100"
endColor="pink.300"
/>
Skeleton часто применяется для:
Skeleton в Chakra UI обеспечивает простую и гибкую реализацию визуальных индикаторов загрузки, поддерживает адаптивный дизайн и легко комбинируется с любыми компонентами интерфейса, что делает его незаменимым инструментом при создании динамичных React-приложений.