Guias · 05

Entrar, sair e layout

Mantenha os filhos que estão saindo até o movimento terminar e anime mudanças de posição e tamanho, inclusive entre componentes.

Animated.Keep

Animated.Keep mantém os filhos diretos com key durante a pose depart. seed={false} faz os filhos presentes no primeiro render começarem na própria pose, wait segura os filhos que entram até as saídas terminarem e onDeparted dispara depois da última.

Preparando o exemplo…

Animated.Scene e move

Animated.Scene mede o layout confirmado. Um elemento com move anima as mudanças de posição e tamanho; uma string como move="pill" conecta elementos com a mesma identidade dentro da Scene, mesmo quando um é desmontado e outro é montado.

A Scene controla o translate e o scale de layout desses elementos, então coloque seus próprios transforms em um elemento aninhado.

Preparando o exemplo…

Presença com um hook

useAnimatedPresence(visible, { enter, exit }) retorna { mounted, animatedValue } quando você prefere controlar a montagem por conta própria.

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;

Fora do React

createLayoutScene oferece a mesma coordenação de captura e confirmação para qualquer renderizador ou alteração manual do 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

Pesquisar

Digite para pesquisar na documentação.