ちょっとした文脈を提供し、私の質問をより明確にするために、私はうまくいくシナリオを提示し、意味をなさないでしょう。「コマンド」をリアクションコンポーネントに送信しますか?
再生、停止、およびシークのコントロールをレンダリングするAudioTrack
コンポーネントがあるとします。ユーザーが求めている場合は、その情報は私達に戻って渡されます。
<AudioTrack playingId={this.state.playingId} onSeek={this.handleSeek} />
しかし、どのような(playingId
は、現在再生中のトラックのIDを示す)私たちは、オーディオトラックの外にシーク制御を移動し、そうであればシークコントロールは親の<TrackList>
に存在し、現在再生中のトラックを制御します。今、私は例えば、適切なトラックにデータを「コマンドを送信」する必要があります。
<AudioTrack playingId={this.state.playingId} seekTo={this.state.newPos} onSeek={this.seekComplete} />
これは私にはハックに感じますが、ユーザーがシークバーの行くことができます基本的にするとき、それはでnewPos
状態を設定しますTrackList
は、AudioTrack
のcomponentWillReceiveProps
をトリガします。それは新しい位置を探して、onSeek
経由で報告することができ、this.setState({ newPos: null })
はTrackList
になります。
これについて正しく考えているのですか、それとも良い方法がありますか?理想的な世界では、私はただ直接AudioTrack
のメソッドを呼び出すことができます。
Reduxのは絶対に必要ではなく、多くの場合、それは実際に過剰に使用されて巻き上げます。私は通常はコメントしませんが、絶対初心者は「一緒に使う必要があります」と読んでほしくないと思っていました。 – ffxsam
これはちょうど真実ではありません。 Redux/etcを使用しても、Reduxストアにすべての状態を保持する必要があることは間違いありません。例えば、UI状態はRedux(例えば、http://redux.js.org/docs/faq/OrganizingState.html#organizing-state-only-redux-state)と正規のhttps://媒体に属していないかもしれません。 com/@dan_abramov/you-might-not-need-redux-be46360cf367#.hud5vjfhj Reduxを使用してかなり楽しんでいることに注意してください。特に、私は必要なコンポーネントにUIの状態を保持しています。 –