2016-12-12 5 views
1

私のコードは公式React-Router git repoの例に非常によく似ています。ここでリアクタトランジションのアニメーションにタイムアウトがありません

Here is a codepen that shows the problem.

問題です:代わり​​属性で指定した時間を待つのではなく、新しい要素がすぐにレンダリングされます。両方のCSSアニメーション(入力と終了)が同時に実行されます。その後、前の要素は削除されます。

私はもう少し複雑な設定で同じ問題をローカルに持っています。そのため、単純なコードを作成して問題のある場所を確認しました。

私はすべてのフレームワークの最新バージョンを使用しています(反応-アドオン-CSS-遷移グループを、反応-ルータを、反応)

const App = ({children, location}) => { 
    return (
     <ReactCSSTransitionGroup 
      component="div" 
      transitionName="app" 
      transitionEnterTimeout={500} 
      transitionLeaveTimeout={500} 
     > 
      {children && React.cloneElement(children, { 
       key: location.pathname, 
      })} 
     </ReactCSSTransitionGroup> 
    ); 

答えて

1

​​を開始する前に遅らせるためにどのくらい説明していません遷移。その値は、ノードから.<name>-enterクラスを削除するまでの待機時間を表します。

入力トランジションを遅らせたい場合は、CSSのトランジションに遅延を追加する必要があります。

transition: $type $time $mode $delay; 

また、遅延の長さによって​​を拡張する必要があります。

transitionEnterTimeout={1000} 
+0

申し訳ありませんが、私はまだ理解しません。 cssのアニメーショントランジションに関係なく、React-Routerトランジション、つまりルートコンポーネントの削除と追加はオーバーラップしています。ルートをすばやくクリックしたときに 'transitionLeave'を' false'に設定しても、分割秒が重なっていることがわかります。トランジション(両方ともfalseに設定)がなければ、ルータ自体のように動作します。この仕事をするために何か他に必要なことはありますか?あるいは、ルート上で使用するのに適していないCSS移行グループですか? – Chris

+0

RRによって提供される例では、ページのコンテナは、ページ内の同じ場所に存在するように完全に配置されています。 –

+0

あなたは正しいです、それはふたつの要素が互いに上に存在することができるように振る舞いを変えました。しかし、これは、バグがまだ存在しているということではなく、2つの要素がルータの通常のようにスワップアウトされるのではなく、短いオーバーラップ期間を持つことに変わりはありません。また、私はすべての絶対的な位置の問題でCSSを修正する必要がある場合は、目的を破ると思う。 – Chris

関連する問題