2016-05-25 5 views
0

FacebookのfixedDataTableを使用して在庫ダッシュボードを表示しています。私が達成する必要があるのは、フラッシュの固定データテーブルのセル(価格の列を言う)は、緑または赤の価格の変化に基づいています。どのように固定データテーブル内のアニメーションを達成するのですか?どうすれば固定データテーブルコンポーネントのセルをアニメーション化できますか?

答えて

1

データシート<Cell>の子コンポーネントでこれをCSSで行うことができます。ような何か:

componentWillReceiveProps(nextProps) { 
    // if the price has changed, add a class to do some animation stuff 
    if (nextProps.price != this.props.price) { 
    this.setState(className: "fancy-flash-class-in"); 
    } 
} 

componentDidUpdate() { 
    // after the component has updated, set the class back 
    if (this.state.className == "fancy-flash-class-in") { 
    setTimeout(() = > this.setState(
     {className: "fancy-flash-class-out"}), 
    500); 
    } 
} 

componentDidUpdate()は、そうでない場合は、アニメーションが動作しません、あなたがsetTimeoutを行いますので、本当に速いと呼ばれています。

CSSでは、アニメーションを追加することができます。

  • 派手なフラッシュクラスイン:コンポーネントにハイライト色、およびCSS遷移
  • 空想フラッシュ級アウトを与えます: CSSアニメーションの基本的な構成要素の色は、あなたのCSSファイルで

だから、基本的な色に戻って赤や緑から行く:

.fancy-flash-class-out { 
    background-color: grey; 
    transition: background-color 2s; 
    -webkit-transition: background-color 2s; /* Safari */ 
} 

シンプルなデモcodepen here

+0

いいえ、これは機能しません。私がcomponentDidUpdate()内のthis.setStateをコメントすると、基本色から赤色へのセルの遷移が確認でき、その赤色のままです。 ComponentDidUpdateは、コンポーネントのWillReceivePropsの後にとても速く呼び出されているようで、バックグラウンドカラーの変更を見ることはできません。 – user1803361

+0

これはあなたのCSSの設定によって異なります。更新された答え。 – wintvelt

+0

返信いただきありがとうございます。しかし、何が起こっているかは、1)componentWillReceivePropsが呼び出され、 "fancy-flash-class-in"クラスが設定されている。 (レンダリングが呼び出されます)2)この遷移が完了する前であっても、componentDidUpdateは状態を "fancy-flash-class-out"(レンダリングされたレンダリング)に戻すように呼び出されます。最終的な影響は、私は常に灰色に見えます。 – user1803361

関連する問題