2015-10-07 2 views
7

私はGUIの反応/ reduxベースのアプリを持っています。ビューの一環として、点滅したい "インジケータ"反応コンポーネントがあり、点滅はCSS3アニメーション(アニメーションフレーム)で行われます。反応コンポーネントのメンバー関数indicator.blink()は、インジケータを点滅させるために呼び出されます(基本的には、点滅クラスをDOM要素から削除し、1ms後に追加します。ハックとして「再起動」APIがないことを回避します)。 CSS3アニメーションの場合)。Reduxからイベントを受け渡すにはどうすればいいですか?

reduxフレームワーク(必要な場合はサンク)で特定のアクションが発生した場合、このblink()を反応ビューで機能させたいと思います。これを最もうまくいく方法は?

還元状態のアクションをアプリの状態に変更するのが正しいと感じていないので、インジケータ要素は実際には状態ではなく瞬間的なイベントであるため、状態変数の1つにpropとしてバインドします。しかし、反応成分を変化させるための還元作用を得る他の方法は知らない。

答えて

1

CSSトランジションは実装の詳細であり、コンポーネントにメソッドを公開しないとします。 (あなたは通常、とにかくべきではありません。)

はどのようにしか小道具によって駆動されることでしょうか?私はブール値の小道isBlinkingで想像しています。あなたが望むなら、これはあなたがRedux状態に保つことができるものです。数百ミリ秒後にSTART_BLINKSTOP_BLINKを送信するアクションクリエイターがいる。

それとも、このためにReduxのを使用して回避し、親コンポーネントから命令的メソッドを呼び出すことができます。

+0

CSS3でこのような「再起動」アニメーションがあった場合はどうなりますか?このシナリオでは、 'STOP_BLINK'の必要はなく、' isBlinking'を 'true'に繰り返し設定することで、Reactコンポーネントに何かを伝えないので、アニメーションを実行して再起動することができます。 基本的に、私はReduxのアクション項目は、「時代を超越した」(すなわちイベント)であるため、状態を変更すると意味がないところでは、リアクトビューにイベントを送信する必要があるでユースケースを見つけようとしています。 私は不可能/不可能と考えていますか? – gbmhunter

+1

このような状況が発生した場合は、ReduxとReactのフローを回避し、必然的に行うだけです。本当はReduxには関係ありません。行動を起こす場所で命令的な効果を発揮する。 –

+0

必須の効果はありますか?これは、ReduxアクションからReactコンポーネントへの通信方法ですか?私は、アクション内からReactコンポーネントへのアクセスを調べましたが、簡単には見えませんでした(つまり、 'React.render()が何をグローバル変数に戻したのかを確認し、Reactテストユーティリティ関数を使用して子コンポーネント)。 – gbmhunter

2

何かが増えたときに表示するには、blinkのものを使用するとします。カウンターを状態に保ち、コンポーネントの内部状態を維持して前の値に保つことができます。変更すると、blinkと新しい値を保存します。言い換えれば

、あなたが気に状態の変化から、ご希望のイベント情報を導き出します。

はそれはそれが何のためにあるのかで、過渡的挙動のこの種のための内部状態を使用するように完全に罰金です。

+0

。私はまずこれが自分のシナリオには当てはまらないと考えましたが、「あなたが気になる国の変化からあなたの希望するイベント情報を引き出す」という文章を読んだところ、この目的に合ったカウンターが実現しました。 – gbmhunter

0

CSSアニメーションに「再起動」はありませんが、繰り返し回数をinfiniteと指定することができます。これは、おそらくReductionを使わずに問題を解決するようですが、.blinkingクラスをオンまたはオフに切り替えるあなたはそれが点滅するかどうかを尋ねます。何かが増加した場合のための完璧な理にかなっている

@keyframes blink { 
    0% { opacity: 0; } 
    50% { opacity: 1} 
    100% { opacity: 0; } 
} 
.blinking{ 
    animation-name: blink; 
    animation-duration: 1s; 
    animation-iteration-count:infinite; 
} 
関連する問題