react-transition-group@^2
で提供されているコンポーネントは
Transition
CSSTransition
TransitionGroup
の3つです。
Transition
Transition
は以下のようなプロパティを取ります。
children
には(status: 'entering' | 'entered' | 'exiting' | 'exited') => JSX.Element
が渡されます。このstatus
の状態を使ってクラス名や何かしらの属性を内部の要素に設定し、CSSなどを使ってアニメーションさせることができます。
in
は内部コンポーネントを表示するかどうかです。in
がfalse
の時はexiting
からexited
に向かい、true
の時はentering
からentered
に向かいます。1番最初は単に-ing
なしでentered
かexited
が直接設定されます。
timeout
は、status
が-ing
である状態の時間(msec)を指定します。これはaddEndListener
を設定しない場合は必須になります。addEndListener
は動的にtimeout
時間を設定したい場合に使えます。例えば CSS のtransition
でアニメーションするような場合、その終わりにtransitionend
イベントが発火しますが、その発火するまでの時間を使うことでtimeout
の代わりとすることができます。(修正箇所も減る)これは第一引数にchildren
関数での戻り値の要素が渡り、第二引数では-ing
の終わりということになるdone
関数が渡ってきます。この渡ってきたルート要素からアニメーションする要素を取得し、transitionend
イベントでdone
を読んで、-ing
を終えるといったことができます。注意点として、このaddEndListener
はin
が変わるたびに毎回実行されます。そのためイベントの登録などをしている場合、実行回数分登録することになってしまうので、毎回done
を呼ぶタイミングでイベントの解除模するといいと思います。
mountOnEnter
in
true
unmountOnExit
exited
onEntered
onExited
onEnter
onExit
-ing
onEntering
onExiting
Transition
Transition
in
timeout
classNames
classNames
-enter
-enter-active
-enter-done
-exit
-exit-active
-exit-done
-appear
-appear-active
-enter
-exit
Transition
-ing
-done
onEnter
onExit
onEntered
onExited
-enter-active
-exit-active
Transition
-ing
-enter-done
-exit-done
Transition
-ed
Transition
Transition
Transition
in
key
in
TransitionGroup
key
import {TransitionGroup} from 'react-transition-group';
(() => {
{items.map(item => {
return
{
status => {
/* ... */
}
}
);
})
})();