ガイド · 05

登場、退場、レイアウト

退場する子要素をモーションが終わるまで残し、位置やサイズの変化を、コンポーネントをまたいでもアニメーションします。

Animated.Keep

Animated.Keep は key 付きの直接の子要素を、depart のポーズが終わるまで残します。seed={false} は最初の描画で存在する子要素をそのポーズから始め、wait はすべての退場が終わるまで登場する子要素を待たせ、onDeparted は最後の退場の後に呼ばれます。

サンプルを準備中…

Animated.Scene と move

Animated.Scene はコミットされたレイアウトを測ります。move を持つ要素は位置とサイズの変化をアニメーションし、move="pill" のような文字列は、片方がアンマウントされて別の要素がマウントされても、Scene の中で同じ識別子を持つ要素どうしをつなぎます。

それらの要素のレイアウト用の translate と scale は Scene が管理するので、独自の transform は内側の要素に付けてください。

サンプルを準備中…

フックで登場と退場を扱う

マウントを自分で制御したいときは、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

検索

入力するとドキュメントを検索します。