コンポーネント間の遷移をアニメーション化する

リック・ジョリー

次のコンポーネントがDOMに追加されてフェードインする前に、最初のコンポーネントがフェードアウトしてDOMから削除される、2つのコンポーネント間をアニメーション化したいと思います。それ以外の場合、新しいコンポーネントがDOMに追加され、古いコンポーネントが削除されます。あなたはこのフィドルで問題を見ることができます:

http://jsfiddle.net/phepyezx/4

// css snippet
.switch-enter {
    opacity: 0.01;
}
.switch-enter.switch-enter-active {
    opacity: 1.0;
}
.switch-leave {
    opacity: 1.0;
}
.switch-leave.switch-leave-active {
    opacity: 0;
}

// React snippet 
<ReactCSSTransitionGroup transitionName="switch">
    <div key={key} className={className}>{this.text()}</div>
</ReactCSSTransitionGroup>

(私にとって)受け入れられない解決策は、ここに示すように、新しいコンポーネントに移行する前に、元のコンポーネントをcssで非表示にすることです。

http://jsfiddle.net/phepyezx/5

// Change to css
.switch-leave {
    visibility: hidden;
    height: 0px;
    width: 0px;
    opacity: 1.0;
}

元のコンポーネントが削除される前に、新しいコンポーネントのマウントから反応を「遅らせる」方法はありますか?私はこれを達成するためにvelocityまたは他のライブラリを受け入れています。

ありがとう

リック・ジョリー

componentWillUnmount()ライフサイクル法を使用して解決しました

http://jsfiddle.net/phepyezx/9/

コードは次のとおりです。

var ReactCSSTransitionGroup = React.addons.CSSTransitionGroup;

const Off = React.createClass({
    componentWillUnmount () {
        this.props.handleTransitionEnd();
    },
    render()  {
        return (
            <div className="off button">OFF</div>
        )
    }
});

const On = React.createClass({
    componentWillUnmount () {
        this.props.handleTransitionEnd();
    },
    render()  {
        return (
            <div className="on button">ON</div>
        )
    }
});

var Switch = React.createClass({
    getInitialState: function() {
        return {
            on: false,
            transitionEnd: true
        };
    },

    toggle: function(e) {
        this.setState({
            on: !this.state.on,
            transitionEnd: false
        });
    },

    handleTransitionEnd() {
        this.setState({transitionEnd: true});
    },

    renderOff() {
        if (! this.state.on && this.state.transitionEnd) {
            return (
                <Off key="off" handleTransitionEnd={this.handleTransitionEnd} />
            )
        }
    },

    renderOn() {
        if (this.state.on && this.state.transitionEnd) {
            return (
                <On key="on" handleTransitionEnd={this.handleTransitionEnd} />
            )
        }
    },

    render: function() {
        return (
            <div>
              <button onClick={this.toggle}>Toggle</button>
              <ReactCSSTransitionGroup transitionName="switch">
                {this.renderOff()}
                {this.renderOn()}
              </ReactCSSTransitionGroup>
            </div>
        );         
    }
});

React.render(<Switch/>, document.getElementById("switch"));

そして関連するcss:

.switch-enter {
    opacity: 0.01;
}
.switch-enter.switch-enter-active {
    opacity: 1.0;
    transition: opacity 500ms ease-in;
}
.switch-leave {
    opacity: 1.0;
}
.switch-leave.switch-leave-active {
    opacity: 0;
    transition: opacity 500ms ease-out;
}

代わりに絶対位置決めと遅延を使用するJonnyBuchananの回答でも、同じ効果的な結果を得ることができます。componentWillUnmount()

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

最初に子コンポーネントの遷移/アニメーションが終了するのを待っている間に、2つのnuxtページ間を遷移するにはどうすればよいですか?

分類Dev

フラグメント間の遷移をアニメーション化する

分類Dev

変換と遷移を使用して反応コンポーネントをアニメーション化する

分類Dev

SwiftUI-遷移をアニメーション化する

分類Dev

SwiftUI-遷移をアニメーション化する

分類Dev

ReactJSのページ遷移とコンポーネントアニメーション

分類Dev

Androidナビゲーションコンポーネントを使用してフラグメント遷移をアニメーション化するときにZインデックスが競合する

分類Dev

SwiftUIでビュー間の遷移をアニメーション化する方法は?

分類Dev

SwiftUIでビュー間の遷移をアニメーション化する方法は?

分類Dev

アニメーションの遷移を停止する方法は?

分類Dev

アニメーションがreact-springで遷移するときのコンポーネントスナップ効果?

分類Dev

フラッター:名前付きルートへの遷移をアニメーション化する

分類Dev

「この」コンポーネントのみをアニメーション化するようにReact-Nativeアニメーションを修正する方法

分類Dev

グループ化され、ネストされたjson座標データの遷移をD3.jsでアニメーション化する方法は?

分類Dev

React Native:特定のコンポーネントをアニメーション化する方法は?

分類Dev

速度反応-コンポーネントの更新後にscrollTopをアニメーション化する

分類Dev

ReactJSでコンポーネントの消失をアニメーション化する方法は?

分類Dev

SwiftUIでテキスト値の変更をアニメーション化/遷移する方法

分類Dev

SwiftUIでテキスト値の変更をアニメーション化/遷移する方法

分類Dev

CSSで境界遷移拡張をアニメーション化する方法は?

分類Dev

別のコンポーネントをクリックしてコンポーネントをアニメーション化する

分類Dev

遷移アニメーションを無効にする

分類Dev

jsで2つの異なる間隔でコンポーネントをアニメーション化する方法

分類Dev

Angular2.0ルーターとコンポーネントインターフェイスを使用したページ遷移アニメーション

分類Dev

QMLでリピーターによって作成されたコンポーネントを移動/アニメーション化する方法は?

分類Dev

アクティビティ間の遷移アニメーションを無効にする

分類Dev

タブ/フラグメントの遷移間で新しいフローティングアクションボタンをアニメーション化するにはどうすればよいですか?

分類Dev

反応ルーターでルート間をアニメーション化/遷移する正しい方法は何ですか

分類Dev

カスタムヘッダーコンポーネントの画面遷移のタイトルアニメーション?

Related 関連記事

  1. 1

    最初に子コンポーネントの遷移/アニメーションが終了するのを待っている間に、2つのnuxtページ間を遷移するにはどうすればよいですか?

  2. 2

    フラグメント間の遷移をアニメーション化する

  3. 3

    変換と遷移を使用して反応コンポーネントをアニメーション化する

  4. 4

    SwiftUI-遷移をアニメーション化する

  5. 5

    SwiftUI-遷移をアニメーション化する

  6. 6

    ReactJSのページ遷移とコンポーネントアニメーション

  7. 7

    Androidナビゲーションコンポーネントを使用してフラグメント遷移をアニメーション化するときにZインデックスが競合する

  8. 8

    SwiftUIでビュー間の遷移をアニメーション化する方法は?

  9. 9

    SwiftUIでビュー間の遷移をアニメーション化する方法は?

  10. 10

    アニメーションの遷移を停止する方法は?

  11. 11

    アニメーションがreact-springで遷移するときのコンポーネントスナップ効果?

  12. 12

    フラッター:名前付きルートへの遷移をアニメーション化する

  13. 13

    「この」コンポーネントのみをアニメーション化するようにReact-Nativeアニメーションを修正する方法

  14. 14

    グループ化され、ネストされたjson座標データの遷移をD3.jsでアニメーション化する方法は?

  15. 15

    React Native:特定のコンポーネントをアニメーション化する方法は?

  16. 16

    速度反応-コンポーネントの更新後にscrollTopをアニメーション化する

  17. 17

    ReactJSでコンポーネントの消失をアニメーション化する方法は?

  18. 18

    SwiftUIでテキスト値の変更をアニメーション化/遷移する方法

  19. 19

    SwiftUIでテキスト値の変更をアニメーション化/遷移する方法

  20. 20

    CSSで境界遷移拡張をアニメーション化する方法は?

  21. 21

    別のコンポーネントをクリックしてコンポーネントをアニメーション化する

  22. 22

    遷移アニメーションを無効にする

  23. 23

    jsで2つの異なる間隔でコンポーネントをアニメーション化する方法

  24. 24

    Angular2.0ルーターとコンポーネントインターフェイスを使用したページ遷移アニメーション

  25. 25

    QMLでリピーターによって作成されたコンポーネントを移動/アニメーション化する方法は?

  26. 26

    アクティビティ間の遷移アニメーションを無効にする

  27. 27

    タブ/フラグメントの遷移間で新しいフローティングアクションボタンをアニメーション化するにはどうすればよいですか?

  28. 28

    反応ルーターでルート間をアニメーション化/遷移する正しい方法は何ですか

  29. 29

    カスタムヘッダーコンポーネントの画面遷移のタイトルアニメーション?

ホットタグ

アーカイブ