Gidsen · 05

Binnenkomen, vertrekken en layout

Houd vertrekkende kinderen vast tot hun beweging klaar is, en animeer veranderingen van positie en grootte, ook over componenten heen.

Animated.Keep

Animated.Keep houdt directe kinderen met een key vast tijdens hun depart-pose. seed={false} laat kinderen die bij de eerste render aanwezig zijn op hun pose beginnen, wait stelt binnenkomende kinderen uit tot elk vertrek klaar is, en onDeparted wordt aangeroepen na het laatste.

Voorbeeld voorbereiden…

Animated.Scene en move

Animated.Scene meet de vastgelegde layout. Een element met move animeert veranderingen in zijn positie en grootte; een string zoals move="pill" verbindt elementen met dezelfde identiteit binnen de Scene, zelfs als er een unmount en een ander mount.

De Scene bezit de layout-translatie en -schaal van die elementen, dus zet je eigen transforms op een genest element.

Voorbeeld voorbereiden…

Aanwezigheid met een hook

useAnimatedPresence(visible, { enter, exit }) geeft { mounted, animatedValue } terug als je het mounten liever zelf regelt.

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;

Buiten React

createLayoutScene geeft dezelfde capture-en-commitcoördinatie aan elke renderer of handmatige DOM-wijziging.

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

Zoeken

Typ om de documentatie te doorzoeken.