Посібники · 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

Пошук

Почніть вводити, щоб шукати в документації.