react + react-router + fluxでクエリパラメータを処理する方法

kenfdev

Backbone.MarionetteアプリをReactに置き換えようとしていますが、クエリパラメータについて考えるのが困難です。私はこのパターンを理解する上で本当に単純な平和を逃していると思うので、この質問がまったくナンセンスであるならば、私は謝罪します。何かサポートをいただければ幸いです。または、より具体的にグーグルできる方向を示していただければ幸いです。

/usersユーザーを一覧表示するページがあり、検索バーを介してユーザーをフィルタリングできます。したがって、ユーザー名に「joe」を含むユーザーをフィルタリングする場合は、のようなクエリパラメーターを使用してサーバーにリクエストを送信します/users?username=joeさらに、pageパラメータを追加することでページ付けすることもできます(/users?username=joe&page=1)。

機能性だけを考えれば、流れはおそらく

  1. クライアントjoeは入力要素に挿入し、[検索]をクリックします
  2. [検索]ボタンをクリックすると、Action(Action.getUserなど)が起動します。
  3. Actionサーバーへの要求を行い、その結果を受け、
  4. 関心のあるDispatcher人(通常はStore)に、結果ペイロードを含む関数をディスパッチしますAction
  5. Storeで受信された新しい結果の状態が変化Action
  6. ビュー(Component)は、Storeの変更をリッスンして再レンダリングします。

そしてそれは期待通りに動作します。ただし、クライアントが現在フィルタリングされた結果をブックマークして、しばらくしてから同じページに戻ることができるようにしたいと思います。これは、クライアントが作成した検索用語に関する明示的な情報をどこかに保存する必要があることを意味します。これは通常、URLです(私は正しいですか?)。したがって、検索語(/users?username=joe&page=1を保存するには、クエリパラメータを使用してURLを更新する必要があります

私が混乱しているのは、いつどこでURLを更新するかです。私が今思いつくことができるのは、以下の2つのオプションです-そしてそれらはまったくきれいではないようです。

オプション1

  1. クライアントjoeは入力要素に挿入し、[検索]をクリックします
  2. [検索]ボタンをクリックすると、新しいクエリパラメータ(/users?username=joe&page=1)を使用してReactRouterの遷移が発生します
  3. ビュー(Component)は、this.props.paramsおよびを介して新しいパラメータを受け取りthis.props.queryます。
  4. ビュー(Component)は、受け取ったクエリパラメータに応じてAction同様に起動Action.getUserします-この場合はusername=joe&page=1

この後は上記と同じです

オプション2(上記で説明したものと異なるのは6つだけです)

  1. クライアントjoeは入力要素に挿入し、[検索]をクリックします
  2. [検索]ボタンをクリックすると、Action(Action.getUserなど)が起動します。
  3. Actionサーバーへの要求を行い、その結果を受け、
  4. 関心のあるDispatcher人(通常はStore)に、結果ペイロードを含む関数をディスパッチしますAction
  5. Storeで受信された新しい結果の状態が変化Action
  6. ビュー(Component)は、Storeの変更をリッスンして再レンダリングします。そして、どういうわけか(私はまだ方法がわかりません)、props、、this.props.searchusernameなどthis.props.searchpage)に応じてURLを更新します

クエリパラメータを処理するためのベストプラクティスは何ですか?(または、これはクエリパラメータに固有ではない場合があります)デザインパターンまたはアーキテクチャを完全に誤解していますか?よろしくお願いします。

私が読んだいくつかの記事

ユジンズ

意味がよくわからない

これは、情報を保存するためにURLを更新する必要があることを意味します(/ users?username = joe&page = 1)。

あなたはおそらくこれに似た構造を持っているでしょう。

TopContainer.jsx-Users.jsx-User.jsxのリスト

通常、TopContainerはすべてのストアを監視し、変更があった場合は、users.jsxに渡します。このように、Users.jsxでは、再レンダリングについて心配することなく、this.props.usersを簡単にレンダリングできます。

ユーザーの検索アクションは通常、TopContainerのcomponentWillMountイベントで発生し、ページはUserStoreをリッスンします。これは、クエリパラメータをスローするのに適した場所です。このようなものはうまくいくでしょう

  componentWillUnmount() {
    let searchTerm = router.getCurrentQuery().searchTerm;
    UserActions.searchUsers(searchTerm)
  },

このページは、URLにクエリパラメータがあるかどうかを実際には気にしません。ユーザーストアに何でも表示されます。

その後、検索が終了すると、Users.jsxが再読み込みされ、正しい結果が表示されます

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

react-routerでクエリパラメータを保持する

分類Dev

React-routerラッパーで非同期リクエストを処理する方法

分類Dev

react-routerで複数のクエリパラメータを連結する

分類Dev

React Native Router Flux

分類Dev

react-router v4でクエリパラメーターを取得する方法

分類Dev

useHistory of React Router Domでパラメータを送信する方法は?

分類Dev

React0.14-react-routerを使用

分類Dev

React Router:クエリパラメータの一致?

分類Dev

mapStateToProps内で、react-routerパラメーターを取得する方法は?

分類Dev

React router -- クエリパラメータや Redux なしで小道具を送るには?

分類Dev

react-routerで認証を処理する方法は?

分類Dev

react-routerでRoute内の複数のパスを処理する方法

分類Dev

react-routerを介してスラッシュでパスを処理する方法は何ですか?

分類Dev

プログラムでreact-routerのクエリパラメータを更新するにはどうすればよいですか?

分類Dev

react-router-dom Linkでパラメーターを渡す方法は?

分類Dev

React-Router外部リンク

分類Dev

react-router4はクエリパラメータでURLを更新しません

分類Dev

react-router 4.0、react-router-dom、react-router-reduxの違いは何ですか?

分類Dev

react-router 4.0、react-router-dom、react-router-reduxの違いは何ですか?

分類Dev

react-router 4.1.1404を返す

分類Dev

コンポーネントのreact-routerを介して渡されたパラメーターの処理

分類Dev

react-routerレンダリング関数でURLパラメーターにアクセスする

分類Dev

react-routerの使用方法

分類Dev

React Router-ルートマッチングでパラメーターを制約する方法は?

分類Dev

React Router-ルートマッチングでパラメーターを制約する方法は?

分類Dev

React Router-ルートマッチングでパラメーターを制約する方法は?

分類Dev

react-router-domリンクでパラメーターを渡しますが正常に動作しません

分類Dev

React Routerを備えたGolang?

分類Dev

クエリ文字列react-routerパス

Related 関連記事

  1. 1

    react-routerでクエリパラメータを保持する

  2. 2

    React-routerラッパーで非同期リクエストを処理する方法

  3. 3

    react-routerで複数のクエリパラメータを連結する

  4. 4

    React Native Router Flux

  5. 5

    react-router v4でクエリパラメーターを取得する方法

  6. 6

    useHistory of React Router Domでパラメータを送信する方法は?

  7. 7

    React0.14-react-routerを使用

  8. 8

    React Router:クエリパラメータの一致?

  9. 9

    mapStateToProps内で、react-routerパラメーターを取得する方法は?

  10. 10

    React router -- クエリパラメータや Redux なしで小道具を送るには?

  11. 11

    react-routerで認証を処理する方法は?

  12. 12

    react-routerでRoute内の複数のパスを処理する方法

  13. 13

    react-routerを介してスラッシュでパスを処理する方法は何ですか?

  14. 14

    プログラムでreact-routerのクエリパラメータを更新するにはどうすればよいですか?

  15. 15

    react-router-dom Linkでパラメーターを渡す方法は?

  16. 16

    React-Router外部リンク

  17. 17

    react-router4はクエリパラメータでURLを更新しません

  18. 18

    react-router 4.0、react-router-dom、react-router-reduxの違いは何ですか?

  19. 19

    react-router 4.0、react-router-dom、react-router-reduxの違いは何ですか?

  20. 20

    react-router 4.1.1404を返す

  21. 21

    コンポーネントのreact-routerを介して渡されたパラメーターの処理

  22. 22

    react-routerレンダリング関数でURLパラメーターにアクセスする

  23. 23

    react-routerの使用方法

  24. 24

    React Router-ルートマッチングでパラメーターを制約する方法は?

  25. 25

    React Router-ルートマッチングでパラメーターを制約する方法は?

  26. 26

    React Router-ルートマッチングでパラメーターを制約する方法は?

  27. 27

    react-router-domリンクでパラメーターを渡しますが正常に動作しません

  28. 28

    React Routerを備えたGolang?

  29. 29

    クエリ文字列react-routerパス

ホットタグ

アーカイブ