Основы React Spring: хук useSpring
Анимируйте значения с помощью useSpring — настраивайте упругость, трение и массу для естественного движения
«Основы React Spring: хук useSpring» — бесплатный урок React Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения React Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс React Academy содержит 4 уроков всего.
Физика пружины и анимация с заданной длительностью
Традиционные CSS-анимации используют фиксированную длительность: анимация выполняется X миллисекунд и останавливается. react-spring анимирует значения с помощью физики пружины — движением управляют tension (жёсткость пружины) и friction (сопротивление, которое пружина оказывает движению). Благодаря этому движение естественно замедляется и выглядит более органично.
Основное использование useSpring
Хук useSpring({ from, to }) определяет анимируемое значение. Начальные значения задаются в from, а целевые — в to. useSpring возвращает объект springs, в котором каждый ключ является SpringValue — анимируемой версией соответствующего числового значения или цвета.
Настройка пружины: натяжение и трение
Параметр config управляет поведением пружины. tension (по умолчанию 170) отвечает за жёсткость: большие значения обеспечивают более резкое движение к цели. friction (по умолчанию 26) отвечает за затухание: при меньших значениях пружина сильнее колеблется. mass (по умолчанию 1) добавляет инерцию. Вместе эти три значения определяют характер анимации.
Предустановленные конфигурации
react-spring поставляется с предустановленными конфигурациями, которые можно использовать без дополнительной настройки: config.default — сбалансированная конфигурация общего назначения, config.gentle — медленная и плавная, config.wobbly создаёт колебания благодаря низкому трению, config.stiff — быстрая и резкая, а config.slow — очень постепенная. Импортируйте их из react-spring.
Объекты SpringValue
Значения, возвращаемые useSpring, являются объектами SpringValue, а не обычными числами. Их нельзя напрямую отображать в JSX или использовать в обычных объектах стилей. Их необходимо применять к компонентам animated.*, которые умеют подписываться на обновления пружины и эффективно применять их к DOM.
Немедленный переход: пропуск анимации
Передача immediate: true в useSpring заставляет значения мгновенно перейти к целевым, минуя анимацию пружины. Это полезно при первоначальной отрисовке, когда пользователь включил параметр «уменьшение движения» в настройках OS, или когда нужно программно сбросить положение без каких-либо визуальных перемещений.
Обращение анимации пружины
Вы можете обратить анимацию пружины, меняя местами начальные и конечные значения. Распространённый шаблон — хранить логическое состояние переключателя и вычислять начальное и конечное значения на его основе: когда переключатель выключен, выполнять анимацию от 0 к 1; когда включён — от 1 к 0. react-spring плавно переключается между состояниями.
Императивный интерфейс: api.start()
useSpring может возвращать массив из двух элементов: const [springs, api] = useSpring(() => ({ from: { x: 0 } })). Объект api предоставляет программный контроль. Вызовите api.start({ x: 100 }), чтобы анимировать переход к новому значению, api.stop(), чтобы зафиксировать анимацию, и api.set({ x: 50 }), чтобы мгновенно перейти к значению без анимации.
Когда использовать декларативный и императивный подходы
Используйте декларативный вариант useSpring({ from, to }), когда анимация зависит от состояния React, которое обычным образом изменяется. Используйте императивный вариант с api.start(), когда нужно запускать анимации из обработчиков событий, жестов или асинхронных операций, не вызывая повторную отрисовку в React.
Обратные вызовы событий пружины
useSpring принимает обратные вызовы жизненного цикла в своей конфигурации. onStart срабатывает, когда пружина начинает анимироваться. onChange срабатывает на каждом кадре и получает текущее значение — это удобно для побочных эффектов, отслеживающих положение. onRest срабатывает, когда пружина достигает конечного значения и останавливается, сообщая о завершении анимации.
Повторный запуск пружин при изменении состояния
В декларативном варианте useSpring автоматически повторно запускает анимацию, когда переданные ему значения изменяются. Например, useSpring({ opacity: isVisible ? 1 : 0 }) будет анимировать непрозрачность при каждом изменении isVisible. Это самый простой способ связать анимации пружины с состоянием компонента.
Параметры физики пружины
Что в конфигурации react-spring контролируют параметры натяжение и трение?
Итоги урока: основы useSpring
react-spring выполняет анимацию на основе физики: натяжение (жёсткость), трение (затухание) и масса определяют движение. useSpring({ from, to }) возвращает объекты SpringValue, применяемые к компонентам animated.*. Предустановленные конфигурации (мягкая, упругая, жёсткая, медленная) подходят для распространённых случаев. Императивный интерфейс [springs, api] обеспечивает программный контроль с помощью api.start(), api.stop() и api.set(). onRest срабатывает, когда анимация останавливается.
Часто задаваемые вопросы
Урок «Основы React Spring: хук useSpring» бесплатный?
Да — полный текст урока «Основы React Spring: хук useSpring» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс React Academy, подпишись на CoddyKit PRO. Курс React Academy содержит 4 уроков всего.
Чему я научусь в уроке «Основы React Spring: хук useSpring»?
Анимируйте значения с помощью useSpring — настраивайте упругость, трение и массу для естественного движения Ты практикуешь React Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать React Academy?
Предыдущий опыт не требуется. React Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Основы React Spring: хук useSpring»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке React Academy?
Да. Каждый урок React Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Основы React Spring: хук useSpring
- Анимированные компоненты и интерполяция стилей
- useTrail и useChain для последовательностей
- Анимации на основе жестов с use-gesture