0
FacebookのfixedDataTableを使用して在庫ダッシュボードを表示しています。私が達成する必要があるのは、フラッシュの固定データテーブルのセル(価格の列を言う)は、緑または赤の価格の変化に基づいています。どのように固定データテーブル内のアニメーションを達成するのですか?どうすれば固定データテーブルコンポーネントのセルをアニメーション化できますか?
FacebookのfixedDataTableを使用して在庫ダッシュボードを表示しています。私が達成する必要があるのは、フラッシュの固定データテーブルのセル(価格の列を言う)は、緑または赤の価格の変化に基づいています。どのように固定データテーブル内のアニメーションを達成するのですか?どうすれば固定データテーブルコンポーネントのセルをアニメーション化できますか?
データシート<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では、アニメーションを追加することができます。
だから、基本的な色に戻って赤や緑から行く:
.fancy-flash-class-out {
background-color: grey;
transition: background-color 2s;
-webkit-transition: background-color 2s; /* Safari */
}
シンプルなデモcodepen here
いいえ、これは機能しません。私がcomponentDidUpdate()内のthis.setStateをコメントすると、基本色から赤色へのセルの遷移が確認でき、その赤色のままです。 ComponentDidUpdateは、コンポーネントのWillReceivePropsの後にとても速く呼び出されているようで、バックグラウンドカラーの変更を見ることはできません。 – user1803361
これはあなたのCSSの設定によって異なります。更新された答え。 – wintvelt
返信いただきありがとうございます。しかし、何が起こっているかは、1)componentWillReceivePropsが呼び出され、 "fancy-flash-class-in"クラスが設定されている。 (レンダリングが呼び出されます)2)この遷移が完了する前であっても、componentDidUpdateは状態を "fancy-flash-class-out"(レンダリングされたレンダリング)に戻すように呼び出されます。最終的な影響は、私は常に灰色に見えます。 – user1803361