Slider в Chakra UI — это компонент для выбора числового значения из заданного диапазона с помощью перетаскиваемого ползунка. Он используется для регулировки параметров, таких как громкость, яркость или значения фильтров. Slider реализован с поддержкой доступности и полностью управляется через свойства React.
Базовый синтаксис:
import { Slider, SliderTrack, SliderFilledTrack, SliderThumb } from "@chakra-ui/react";
<Slider defaultValue={30} min={0} max={100} step={5}>
<SliderTrack>
<SliderFilledTrack />
</SliderTrack>
<SliderThumb />
</Slider>
SliderTrack задает видимую дорожку ползунка,
SliderFilledTrack отображает заполненную часть до текущего
значения, а SliderThumb — сам перетаскиваемый элемент.
Slider может быть неуправляемым с
defaultValue или управляемым, когда его
значение хранится в состоянии React:
import { useState } from "react";
import { Slider, SliderTrack, SliderFilledTrack, SliderThumb } from "@chakra-ui/react";
const ControlledSlider = () => {
const [value, setValue] = useState(50);
return (
<Slider value={value} onCha nge={(val) => setValue(val)} min={0} max={100}>
<SliderTrack>
<SliderFilledTrack />
</SliderTrack>
<SliderThumb />
</Slider>
);
};
Это позволяет синхронизировать Slider с другими элементами интерфейса и выполнять побочные эффекты при изменении значения.
Chakra UI предоставляет мощные возможности для кастомизации Slider через props и системные стили.
<Slider colorScheme="teal" size="lg" defaultValue={40}>
<SliderTrack>
<SliderFilledTrack />
</SliderTrack>
<SliderThumb />
</Slider>
sm, md,
lg. Размер влияет на толщину дорожки и размер Thumb.Slider поддерживает состояния :hover,
:focus и :active для улучшения
интерактивности:
<Slider
_hover={{ thumb: { boxShadow: "0 0 0 8px rgba(72,187,120,0.24)" } }}
_focus={{ thumb: { boxShadow: "outline" } }}
>
<SliderTrack>
<SliderFilledTrack />
</SliderTrack>
<SliderThumb />
</Slider>
</Slider>
SliderThumb или SliderTrack).Chakra UI поддерживает RangeSlider, когда нужно выбрать диапазон значений:
import { RangeSlider, RangeSliderTrack, RangeSliderFilledTrack, RangeSliderThumb } from "@chakra-ui/react";
<RangeSlider defaultValue={[20, 80]} min={0} max={100} step={5}>
<RangeSliderTrack>
<RangeSliderFilledTrack />
</RangeSliderTrack>
<RangeSliderThumb index={0} />
<RangeSliderThumb index={1} />
</RangeSlider>
[minValue, maxValue].RangeSlider полезен для фильтров цен, диапазонов времени и других случаев, где требуется два значения одновременно.
vertical)
или горизонтальный (horizontal).Пример вертикального Slider:
<Slider orientation="vertical" min={0} max={100} defaultValue={50} height="200px">
<SliderTrack>
<SliderFilledTrack />
</SliderTrack>
<SliderThumb />
</Slider>
</Slider>
Помимо onChange, Slider поддерживает:
<Slider
onChangeSt art={() => console.log("Начало")}
onChange End={(val) => console.log("Конец", val)}
>
<SliderTrack>
<SliderFilledTrack />
</SliderTrack>
<SliderThumb />
</Slider>
</Slider>
Эти события полезны для оптимизации работы с API или динамической подгрузки данных при изменении значения.
Slider легко интегрируется с формами и библиотеками управления состоянием, например, с React Hook Form или Formik, используя управляемые значения:
<Slider
value={form.values.volume}
onCha nge={(val) => form.setFieldValue("volume", val)}
min={0}
max={100}
>
<SliderTrack>
<SliderFilledTrack />
</SliderTrack>
<SliderThumb />
</Slider>
</Slider>
Таким образом Slider становится полноценным контролом ввода числовых значений, полностью синхронизированным с логикой формы.
ArrowLeft, ArrowRight, ArrowUp,
ArrowDown).onChangeStart и onChangeEnd
позволяют оптимизировать взаимодействие с внешними процессами.Slider в Chakra UI — это гибкий, визуально настраиваемый и доступный инструмент для выбора числовых значений в интерфейсе, подходящий для большинства задач регулировки параметров.