Компонент Highlight используется для визуального выделения части текста внутри строки или абзаца, сохраняя при этом возможность работать с обычным текстом. Он особенно полезен для подсветки ключевых слов, поисковых терминов или важных фраз в тексте.
Синтаксис базового использования:
import { Highlight, Text } from "@chakra-ui/react";
<Text>
<Highlight
query="Chakra UI"
styles={{ px: "2", py: "1", bg: "yellow.200", rounded: "md" }}
>
Chakra UI — это мощная библиотека компонентов для React.
</Highlight>
</Text>
В данном примере слово “Chakra UI” будет подсвечено
с фоновым цветом yellow.200 и скруглёнными краями.
Остальная часть текста останется обычной.
Примеры использования разных форматов query:
<Highlight
query={["React", "Chakra UI"]}
styles={{ bg: "blue.100", fontWeight: "bold" }}
>
React и Chakra UI позволяют быстро создавать интерфейсы.
</Highlight>
В этом примере одновременно подсвечиваются слова React и Chakra UI.
Компонент поддерживает все стандартные стили Chakra UI, включая:
bg, backgroundColor)color, textColor)rounded,
borderRadius)px, py, mx,
my)fontWeight,
fontStyle)Пример с более сложной стилизацией:
<Highlight
query="важное"
styles={{
bg: "red.100",
color: "red.800",
fontWeight: "semibold",
px: 3,
py: 1,
rounded: "lg",
textTransform: "uppercase"
}}
>
Это очень важное уведомление для всех пользователей.
</Highlight>
По умолчанию поиск чувствителен к регистру. Если необходимо
подсвечивать текст независимо от регистра, нужно привести и
query, и текст к единому регистру перед передачей
компоненту.
Пример:
const text = "Chakra UI удобен и гибок";
const query = "chakra ui";
<Highlight
query={query.toLowerCase()}
styles={{ bg: "green.200" }}
>
{text.toLowerCase()}
</Highlight>
Highlight можно использовать внутри любых
компонентов Chakra UI, включая Box, Heading,
Text. Это позволяет сочетать подсветку с интерактивными
элементами, например, ссылками или кнопками.
<Text>
Ознакомьтесь с <Highlight query="документацией" styles={{ bg: "yellow.200" }}>документацией</Highlight> на официальном сайте.
</Text>
В примере подсвеченное слово «документацией» может быть обёрнуто в
тег <a> или использовать onClick для
интерактивного поведения.
Для больших объемов текста рекомендуется:
query, чтобы подсветка
выполнялась единым проходом.React.memo или useMemo.Пример с мемоизацией:
const highlightedText = useMemo(() => (
<Highlight query={["React", "Chakra UI"]} styles={{ bg: "blue.100" }}>
React и Chakra UI позволяют быстро создавать интерфейсы.
</Highlight>
), []);
Highlight полностью интегрирован с системой тем Chakra UI. Цвета
bg и color могут быть определены через объект
темы, что обеспечивает согласованность стиля с остальным
приложением.
<Highlight
query="React"
styles={{ bg: "primary.100", color: "primary.800" }}
>
React упрощает разработку интерфейсов.
</Highlight>
Highlight из
@chakra-ui/react.children.query.styles.Компонент Highlight обеспечивает простую и гибкую подсветку текста, позволяя выделять ключевые слова, сохраняя при этом полную совместимость со стилями и темами Chakra UI. Он идеально подходит для документации, поисковых интерфейсов и любых приложений, где важна визуальная акцентуация текста.