Руководства · 07

Переход с React Native

Что остаётся прежним, что меняется и что добавляет веб.

Те же вызовы

Контроллеры, графы и конфигурации следуют Animated из React Native. Рендерите DOM-хосты вроде Animated.div там, где React Native рендерит Animated.View. useAnimatedValue доступен так же, как в React Native.

Подготовка примера…

Отличия, которые стоит знать

Благодаря этим деталям перенесённый код ведёт себя так же, как на устройстве.

  • useNativeDriver и isInteraction принимаются. Воспроизведение же выбирается для каждого выхода отдельно: подходящие выходы воспроизводит браузер, остальные — JavaScript.
  • spring принимает stiffness/damping/mass, bounciness/speed или tension/friction, а если ничего не задано — значения React Native по умолчанию.
  • interpolate поддерживает easing и три режима экстраполяции.
  • Easing совпадает с React Native, включая elastic. Easing.exp масштабирована на 0,1 %, чтобы начинаться ровно с 0 и использовать воспроизведение браузером.
  • Скорость decay задаётся в единицах за миллисекунду, а скорость пружины — в единицах за секунду, как в React Native.
  • Animated.createAnimatedComponent оборачивает компонент, пробрасывающий ref.
Spinner.jsx
// React Native
<Animated.View style={{ transform: [{ rotate }] }} />

// React DOM with @kkwaenggwari/animated — the rest is identical
<Animated.div style={{ transform: [{ rotate }] }} />

const spin = useAnimatedValue(0);
const rotate = spin.interpolate({ inputRange: [0, 1], outputRange: ['0deg', '360deg'] });

Animated.loop(
  Animated.timing(spin, { toValue: 1, duration: 900, easing: Easing.linear, useNativeDriver: true }),
).start();

Что добавляет веб

Обычный style React напрямую принимает значения хуков, seed/pose/respond описывают цели и жесты, а Animated.Keep и Animated.Scene отвечают за уходы и раскладку.

Поиск

Начните вводить, чтобы искать в документации.