2016-05-08 11 views
10

私はSPAにreduxとreact routerを使用する方法を知っています。バネMVC、JSPなどのサーバー側のフレームワークを使用した、より伝統的なマルチページWebアプリケーションでreduxを使用する方法を知りたいマルチページWebサイトでreduxを使用するには?

複数のページが同じストアを共有できますか?サーバーサイドレンダリングのドキュメントから、すべてのページサーバーは新しいストアを必要とします。

+0

私は昨日同様の質問をしました:http://stackoverflow.com/q/37096921/916450。本当の答え(私にとっては)、まだ.. –

+0

kwelchによる正解は以下の通りです。あなたがページをリロードすると、すべてのロードされたライブラリなどで、あなたはJavaScriptのランタイム・コンテキスト全体を失うので(私はこれが正しい言葉であることを願っています)、すべてのページは新しいストア・インスタンスを必要とします(これは同じデータで初期化できます)。 – timotgl

答えて

3

サーバーサイドレンダリング(SSR)を使用している場合、クライアントは各レンダリングで新しいストアを作成します。ストアはinitialStateで作成されるため、ローカル/セッションストレージを使用してルート間で状態を保持するか、ページのheadにレンダリングし、ストアの作成時に異なるアプリケーション間で状態を維持するために使用できます。

+0

SSR =サーバー側のレンダリング私は推測しますか?超明白ではありません:) – timotgl

+0

はい、私は答えを更新して申し訳ありません。 – kwelch

0

あなたは最近、誰かが従っているすべてのために大きなSPAのサイレンの曲に抵抗したと聞いてうれしいです。

複数のページがあるため、各ページは1つの独立したReactアプリと見なされるため、それぞれ1 Reduxが必要です。しかし、あなたの多くのページでは、jQueryまたは純粋なReactで十分です。ですから、私の答えは単なる単純なものです:の複雑な状態管理、豊富なユーザインタラクション、高いコード管理性の要求を持つページでReduxを使用してください。

についてRedboxストアについては、何十年もインターネットを動かす非常に優れた古いものを持っているので、ページ全体に共有ストアは必要ありません。サーバーセッション。ページがレンダリングされるたびに、この共有値をwindows.__INITIAL_STATE__に設定してください。 cookielocal storage、...いくつかの選択肢がありますが、私はそれらが本当に必要ではないと思います。

+0

ページAは反応、還元、jquery、ページBは反応しか出さないなど、別のページに別のフロントエンドスタックを提供するのは良いアドバイスではないと思います。とにかくブラウザはjsバンドルをプロダクションにキャッシュし、ページ間を区別するために不要な複雑さのレイヤーを追加します。ここで別のページの異なるアプリケーション*について実際に話している場合を除きます。 – timotgl

+0

私たちは皆さんがすでにそれを知っていたので、SPAについて言わせるために別のページについて話しています。私はまだあなたが単純なページで 'jQuery'や' vanillajs'でもできると信じています。適切な場所に適切なツールを使用してください。すべてのために '反応'を使用して停止! – haotang

関連する問題