2016-05-28 6 views
2

私は時々イベントを発生させるJobオブジェクトを持つreact/reduxアプリケーションを書いています。これらのイベントでは、ユーザーは反応することが期待されます。私は簡単な仕事やイベントを示しリアクトのコンポーネントを書き込むことができますが、react/reduxアプリで非UIロジックを置く場所はどこですか?

  • ユーザーがジョブのページ
  • にないとイベントが
  • を発生したときにどこロジックを置くことを知りません通知をポップアップ表示したい

もちろん、店にアクセスすると通知も作成できます。

  1. このようなロジックをReactコンテナで処理するのは、render()なのでしょうか?
  2. または、ジョブデータをロードするときにバニラJSで処理しますか?
  3. データが格納されているときに減速機で処理しますか?

私の問題は、私のストアがグローバルオブジェクトではないため、完全にアドホックなコードからreduxストアにアクセスする方法がわかりません。

お勧めですか?

+0

データを非同期にロードすると、SHOW_NOTIFICATIONアクションなどを起動できますか?また、店舗を作成するときにその店舗をエクスポートし、変更を購読する必要がある場合はどこにでもインポートすることができます。 – Lee

+1

ユーザでない場合、ジョブイベントをトリガするのは何ですか?ウェブソケット?ワーカースレッド?何かのタイマー? – azium

+0

ルートコンポーネントの下に 'Notifications'コンポーネントを置いて、そのようなイベントを待ち受け、必要に応じて通知を表示します。 –

答えて

3

一般的に言えば、ストアにアクセスする必要のあるコードを置く場所は、ミドルウェアまたは接続されたコンポーネントです(状態の更新をディスパッチまたは受信する)。あなたが特にやり取りするアクションに応答したい場合は、ミドルウェアを使用する必要があります。

私は実際に数週間前にチャットディスカッションでサンプルタイマーミドルウェアを一緒に投げました。例としてここに要点として貼り付けました:https://gist.github.com/markerikson/ca96a82d6fdb29388aca4052a9455431。バックグラウンドで何かを非同期的に実行するアイデアを示します。

Reduxアドオンカタログのミドルウェアのリストを調べることもできます:https://github.com/markerikson/redux-ecosystem-links/blob/master/middleware.md。バックグラウンドロジックを実行する方法の数多くの例

最後に、https://github.com/yelouafi/redux-saga(それ自体ミドルウェアです)は、バックグラウンドロジックを実行するために使用されるかなり一般的なライブラリです。

関連する問題