0Pricing
React Academy · Урок

Основы 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 — локальная установка не требуется.

Все уроки этого курса

  1. Основы React Spring: хук useSpring
  2. Анимированные компоненты и интерполяция стилей
  3. useTrail и useChain для последовательностей
  4. Анимации на основе жестов с use-gesture
← Назад к React Academy