react-queryとreact-router-domを使用したキャッシング

user210757

私はreact-query試していますが、それがキャッシュされるのを見たいと思っています。書籍のリストを取得するページがあります。

重要な部分を表示しようとするだけで、簡潔にするために一部のコードが明らかに省略されていることに注意してください。

const useBooks = options => {
  return useQuery(['books', options], bookApi.fetchBooks(options));
}

const Books = () => {
  useEffect(() => () => console.log("unmount"), []);
  const [options, setOptions] = useState({}); // options ex: { page: 1, search: "test"}
  const {error, isLoading, data} = useBooks(options);

  return books.map(book => <div>{book.name}</div>;
}

これで、この本は、react-router-domを使用した私のアプリの「ページ」になりました

const App = () => {

  return (
    <Router>
      <>
        <Route exact path="/">
          <Home />
        </Route>
        <Route path="/books">
          <Books />
         </Route>
      </>
     </Router>
    )
  }

「ホーム」と「本」の間を行ったり来たりすると(アプリのナビゲーションリンクをクリックして)、本のフェッチが毎回ネットワークにヒットするのがわかります。コンソールに「アンマウント」も表示されます。

私はもともとルートをスイッチラップしていて、これを削除しましたが、Booksコンポーネントはまだマウント解除されているようです。マウントが解除されず、ネットワークフェッチが表示されず、ブックがreact-queryキャッシュからプルされることを期待しています。また、useBooksフックで検索オプションパラメータを使用しないようにしてみましたが、結果は同じでした。

シナリオでネットワークフェッチを回避するにはどうすればよいですか?

TkDodo

react-routerコンポーネントから離れると、コンポーネントがアンマウントされます。しかし、それは意図的なものであり、問​​題ではありません。

react-queryフックを使用するコンポーネントがマウントされると、フェッチがトリガーされます(マウントのため)。ただし、この特定のキーのデータがすでにキャッシュにある場合は、そのデータが「古いデータ」として即座に返され、フェッチはバックグラウンドでのみ実行されます。

リクエストの送信を回避したい場合は、次のいずれかを実行できます。

  • コンポーネントのマウント時に再フェッチが発生しないように設定refetchOnmountfalseます
  • staleTimeクエリにを設定します

を設定することをお勧めしますstaleTime:データが「新鮮」と見なされる期間をreact-queryに通知します。5分に設定すると、5分間バックグラウンドでの再フェッチは行われません。データは常にキャッシュから直接取得されます。staleTimeデフォルトは0、であるため、常にバックグラウンドで再フェッチされます。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

混乱react-router-domとreact-router-redux

分類Dev

ReactReduxとreact-router-dom

分類Dev

react-routerとreact-router-dom、どちらを使用するか?

分類Dev

React-router-dom push

分類Dev

React0.14-react-routerを使用

分類Dev

react-router-domを使用した承認と認証

分類Dev

react-router-domリンクを使用したSpeedDialAction

分類Dev

React-Router-Dom useParams()を使用してMERNアプリケーションでクーポンコードをキャプチャできますか?

分類Dev

react-router-domとreactフックが機能しない

分類Dev

react-router-domを使用したreact-bootstrapブレッドクラム

分類Dev

'react-router'を 'react-router-dom'に移行します(v4)

分類Dev

React-routerとnginx

分類Dev

Typescriptとreact-router

分類Dev

React Routerを備えたGolang?

分類Dev

react-routerを使用したときにReactアプリがクラッシュするのを防ぐ方法

分類Dev

react-router-dom not working as intended

分類Dev

Pass id as props in react-router-dom

分類Dev

React Router Dom Link in another component

分類Dev

How to Use nested routes in react router dom

分類Dev

小道具を使用した新しいページへのReact-router-domルーティング

分類Dev

React-Router + withRouterを使用したReactフック

分類Dev

react-router-domのBrowserRouterを使用した動的ベース名

分類Dev

react-router-domを使用したhistory.push

分類Dev

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

分類Dev

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

分類Dev

Preserve query parameters in react-router

分類Dev

react-bootstrap breadcrumb with react-router-dom

分類Dev

react-routerの使用方法

分類Dev

React-Router外部リンク

Related 関連記事

  1. 1

    混乱react-router-domとreact-router-redux

  2. 2

    ReactReduxとreact-router-dom

  3. 3

    react-routerとreact-router-dom、どちらを使用するか?

  4. 4

    React-router-dom push

  5. 5

    React0.14-react-routerを使用

  6. 6

    react-router-domを使用した承認と認証

  7. 7

    react-router-domリンクを使用したSpeedDialAction

  8. 8

    React-Router-Dom useParams()を使用してMERNアプリケーションでクーポンコードをキャプチャできますか?

  9. 9

    react-router-domとreactフックが機能しない

  10. 10

    react-router-domを使用したreact-bootstrapブレッドクラム

  11. 11

    'react-router'を 'react-router-dom'に移行します(v4)

  12. 12

    React-routerとnginx

  13. 13

    Typescriptとreact-router

  14. 14

    React Routerを備えたGolang?

  15. 15

    react-routerを使用したときにReactアプリがクラッシュするのを防ぐ方法

  16. 16

    react-router-dom not working as intended

  17. 17

    Pass id as props in react-router-dom

  18. 18

    React Router Dom Link in another component

  19. 19

    How to Use nested routes in react router dom

  20. 20

    小道具を使用した新しいページへのReact-router-domルーティング

  21. 21

    React-Router + withRouterを使用したReactフック

  22. 22

    react-router-domのBrowserRouterを使用した動的ベース名

  23. 23

    react-router-domを使用したhistory.push

  24. 24

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

  25. 25

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

  26. 26

    Preserve query parameters in react-router

  27. 27

    react-bootstrap breadcrumb with react-router-dom

  28. 28

    react-routerの使用方法

  29. 29

    React-Router外部リンク

ホットタグ

アーカイブ