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

Появление, уход и раскладка

Удерживайте уходящие дочерние элементы, пока не закончится их движение, и анимируйте изменения позиции и размера, в том числе между компонентами.

Animated.Keep

Animated.Keep удерживает прямых потомков с key на время их позы depart. seed={false} заставляет потомков, присутствующих при первом рендере, начинать с их позы, wait откладывает появление новых до завершения уходов, а onDeparted срабатывает после последнего.

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

Animated.Scene и move

Animated.Scene измеряет зафиксированную раскладку. Элемент с move анимирует изменения своей позиции и размера; строка вроде move="pill" связывает элементы с одинаковой идентичностью внутри Scene, даже когда один размонтируется, а другой монтируется.

Scene владеет смещением и масштабом раскладки этих элементов, поэтому свои трансформации задавайте вложенному элементу.

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

Присутствие через хук

useAnimatedPresence(visible, { enter, exit }) возвращает { mounted, animatedValue }, когда вы предпочитаете управлять монтированием сами.

Toast.jsx
const { mounted, animatedValue } = useAnimatedPresence(open, {
  enter: (value) => spring(value, { toValue: 1 }),
  exit: (value) => timing(value, { toValue: 0, duration: 180 }),
});

return mounted ? <div style={{ opacity: animatedValue }}>Saved</div> : null;

Вне React

createLayoutScene даёт ту же координацию захвата и фиксации любому рендереру или ручному изменению DOM.

outside-react.js
const scene = createLayoutScene({ tempo: { spring: { stiffness: 320, damping: 30 } } });
const card = scene.attach(element, { key: 'card' });

scene.capture(); // before the DOM changes
list.prepend(element); // any renderer or manual DOM work
scene.commit(); // animates from the captured rectangles

Поиск

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