2016-04-27 6 views
1

私は、本当にどのくらいの国が実際に店舗に属していて、コンポーネントに入っていないのだろうと思いましたか?私はいくつかの場所で実際にすべての州が店内に住んでいなければならないことを読んだ。実際に店舗にはどのくらいの国が属していますか?

入力値(送信前)、入力検証、モーダルが開いている場合、何かがクリックされた場合など、本当にコンポーネント固有のものが含まれますか?

ここでベストプラクティスは何ですか?

+0

正直言って、私はそのパターンが流出しているのを好まない。以前はフラックスを使用していましたが、私は店舗の状態に深く関わっていませんでした。私がしたことは、サーバー/アクションから必要とされたデータを提供するためにフラックスを使用して、データを提供することでした。ストアにそのデータがある場合、ストアデータに基づいて状態を設定できます。しかし、入力値、アクティブなクラスのトグル状態ビュー、オープンまたはクローズドモーダルなどの些細なことは、コンポーネントを管理させ、アクションを実行する必要はありません。それはトンをより意味があり、良いパターンです –

答えて

0

フラックス店舗すべてを維持するには、一部アプリをbenefitialかもしれません。

まず、あなたのアプリがこのようなものかどうかを判断しようとする必要があります。

  1. 状態がフラックスストアに属するかどうかわからない場合は、フラックスストアに属していない可能性が最も高いです。
  2. 。そのようなアプリケーションアーキテクチャがあなたにとって適切であるかどうかの理解のレベルに達すると、おそらくあなたの最初の質問に対する答えも知っているでしょう。

しかし、もちろん、それはコンポーネントといないときに内部の状態を維持するときに言って、特定のガイドのいくつかの種類、多分ちょうど精神的なガイドを持っていてうれしいです。

私はこれらのガイドと一緒に行きたい:

  • を純粋にUI関連のこの状態ですか?それからあなたはたぶんそれを店内に保管する必要はありません。
  • この状態は、コンポーネント外にあるですか?そうでない場合は、店に入れないでください。それはコンポーネントの内部に問題ありません。
  • この状態をURLに保持できますか?もしそうなら、店に入れないでください。それをURLに入れてください!これは、入力または現在開いているタブの検索クエリである可能性があります。

は、これらのすべての例外があるかもしれませんが、一般的に、私は、これは、フラックスアプリの独創的なアイデアにも対応するようにと考えています。


P.S.また、すべてのあなたのUIを不変の状態ツリーの中に残すべきであると言っていることについて、たくさんの話があります。これは、還元が多くの人々に導入される方法です。これは素晴らしいコンセプトで、ユーザーの操作を保存/再生することができますが、多くの場合、は不要です。とFluxの主なアイデアではありません。そしてredux自体はでない大きなフラックスツールですは、すべてのUI状態をストアに保存するよう強制します。

0

コンポーネントに固有のビューステートは、そのコンポーネントに属します。多くのコンポーネントに関係するApp状態は店舗に属します。

0

議論の余地があります。 たとえば、reduxは、ALL状態がストアに属するパターンを提案します。個人的には、多くの状況では実用的ではないと思います。店舗内のボタンの状態を保存する理由がある場合は非常にまれです。 しかし、それは有利なこともあります。あなたのアプリ全体がステートレスなときにテストすることは間違いなく簡単です。

2

明らかな答え:
コンポーネントの状態の中で、コンポーネント固有の状態(入力値、モーダルオープン/クローズ、スタッフクリック、レイアウト、フォーマット)を可能な限り保持します。
店内にアプリの特定の状態があります。これには、サーバーとの間でやりとりするものが含まれますが、これに限定されません。

言っ

、灰色の領域の多くがここにあります:

  • は、フィルタは、検索リストコンポーネントの状態に適用されますか?またはアプリケーションの状態(同じページへの今後の訪問のためにフィルタを保存する場合)?
  • は、グローバルルートメニューのルートコンポーネント状態またはアプリケーション状態の訪問済みリンクですか?
  • オプティミスティック・アップデートを使用している場合は、サーバーとの通信の前後に、ユーザーの入力内容をストアに保存する必要があります。親指の

いくつかのルールは私が使用します。それはコンポーネントと同じライフサイクルを持っている場合

  • 国がコンポーネントに属する(その状態は、コンポーネントのマウントの前に存在し、それならば必要がない場合
  • アプリケーションを終了して再オープンするときに状態を記憶する必要がある場合は、おそらくストア内に置くのが最も良いでしょう(サーバーやローカルストレージと交換する場合)
  • 疑問コンポーネントでのみ状態から開始:状態をはるかにローカルに保ちますあなたのコードをより管理しやすくします。後の段階では、常に状態をストアに移動できます。
+0

私はこれらがあなたが指摘した素晴らしいルールだと思います。私は、「すべての場合ではないが、アプリケーションを閉じて再オープンするときに記憶される必要がある」という状態をURLに保持することができ、時にはlocalStorageではなく、そのままにすることも可能な場合があることを付け加えます。 – timetowonder

+0

良い点。しかし、そのデータがURLにある場合、厳密に言えば、データは状態ではなく、何らかの形で反応ツリーに小道具として渡されなければなりません。厳密に言えば、データはアプリケーションによって/に記憶されませんが、URLに保存されなければなりません。 – wintvelt

関連する問題