私の問題を示すビデオ: https://i.imgur.com/L3laZLc.mp4
カードを2つの異なる行に追加できるシンプルなアプリがあります。カードが行に追加されると、react-transition-group
を使用して「入力」アニメーションをトリガーします。
ただし、react-beautiful-dnd
をインストールして、カードを行間でドラッグしたり、行自体を並べ替えたりすることもできます。ただし、カードが新しい行に移動されたとき、または行が並べ替えられたときに、一部のカードには「エンター」アニメーションが発生します。
ドラッグすると、次の場合に不要なアニメーションが発生します
カードは別の行にドラッグされます。
行が再注文され、2つの行のカードの数が異なります。
奇妙なことに、不要なアニメーションは発生しません
react-transition-group
を使用してstate
を変更したときにreact-beautiful-dnd
アニメーションが起動しないようにするには、どうすればよいか知りたいのですが。
私の問題のサンドボックス(App.js
ファイルのコメントに詳細情報):
RaviNilaによるソリューションを変更し、スタイルの追加のコレクションを誘導することにより、行間をドラッグしたときに言及されるまばたきを削除しました。この点滅は、次のcssプロパティによって引き起こされました。
transition: all 200ms ease-out;
クラスとしてタイムアウト0および ""に設定されていても、項目がTransitionGroupの一部としてレンダリングされた場合、おそらくnewCardItemがsetTimeoutで変更されたために、遷移が引き続き発生しました。ただし、setTimeoutを削除すると、アニメーションが完全に終了します。したがって、その遷移プロパティなしでスタイルを繰り返すと、問題が完全に修正されます(faics)。
https://codesandbox.io/s/get-beautiful-drag-to-not-trigger-transition-group-share-bpc4
App.js
あなたはあなたの要件である次のコメントに言及しました:
欲しいもの:
react-transition-group
新しい状態が追加されたときにのみアニメーションが起動する
(onDragEnd
関数を使用して)ドラッグアンドドロップによって状態が変更されたときではありません。
この問題は、新しいフラグhasNewCard
を導入するだけで修正できます。このフラグは、新しいカードが作成されたときにのみtrue
になります。状態がonDragEnd
によって変更されたときではありません。
だからここreact-transition-group
アニメーションは、hasNewCard
がtrue
の場合にのみ起動する必要があります。
CodeSandboxバージョン:
https://codesandbox.io/s/get-beautiful-drag-to-not-trigger-transition-group-share-o25ej