使用react-query和react-router-dom进行缓存

用户名

我正在尝试反应查询,并希望看到它缓存。我有一个页面,其中包含书籍列表。

注意,为简洁起见,有些代码显然只是为了展示重要部分而被省略了。

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>
    )
  }

当我在“主页”和“书籍”之间来回切换(通过单击应用程序中的“导航”链接)时,我看到书籍每次都在网络上获取。我还在控制台中看到“卸载”。

我最初将Routes包裹在Switch中,并删除了它,但是Books组件仍然似乎要卸载。我希望它不会卸载,也不会看到网络获取,并且书籍将从反应查询缓存中提取。我还尝试过使useBooks挂钩不使用搜索选项参数,但结果是相同的。

在我的情况下如何使用避免网络获取?

渡渡鸟

react-router当您离开组件时,它将卸载您的组件,是的。但这是有目的的,而不是问题。

当使用反应查询挂钩的组件挂载时,它将触发获取(由于挂载)。但是,如果您已经在高速缓存中为该特定键存储了数据,则将立即获得该数据作为“陈旧数据”返回,并且仅在后台进行获取。

如果要避免请求发出,可以执行以下任一操作:

  • 设置refetchOnmount为,false以便在安装组件时不进行重新引用
  • staleTime在您的查询上设置

我建议设置staleTime:它将告诉react-query数据应被视为“新鲜”的时间。如果将其设置为5分钟,则5分钟内将不会进行后台重新引用-数据将始终直接来自缓存。staleTime默认为0,因此您将始终获得后台重新引用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用react-router和requirejs进行React的基本设置

来自分类Dev

使用react-router和requirejs进行React的基本设置

来自分类Dev

如何使用react-intl,react-router-dom v4和TypeScript对React组件进行单元测试

来自分类Dev

使用React-Router-Dom创建PrivateRoute

来自分类Dev

使用React Router组件进行重定向

来自分类Dev

如何使用React正确设置react-router-dom链接

来自分类Dev

react-router-dom 不能与 express 和 react 结合使用

来自分类Dev

使用React Router和Redux Simple Router进行onEnter转换不会渲染新路由的组件

来自分类Dev

使用React,React-Router和Express进行服务器端渲染

来自分类Dev

React Router Dom的<Switch>问题

来自分类Dev

使用 react-router-dom 在反应中全局使用 Header

来自分类Dev

使用 React-hot-loader 3、React-router 4 和 Webpack-hot-middleware 进行 React Hot Reload

来自分类Dev

使用webpack和react-router进行延迟加载和代码拆分未加载

来自分类Dev

如何在使用中发送参数React Router Dom的历史?

来自分类Dev

如何使用CSS在React Router Dom中选择链接标签?

来自分类Dev

使用react-router-dom的history.push

来自分类Dev

使用React Router DOM处理浏览器后退按钮

来自分类Dev

无法使用 switch 语句渲染路由 React router dom 5.0.0

来自分类Dev

如何使用 react-router-dom 创建动态路由?

来自分类Dev

react-router-dom和Typescript不显示组件

来自分类Dev

react-router-dom嵌套的路由和重定向

来自分类Dev

带有 Reactstrap 和 React Router Dom 的 Active NavLink

来自分类Dev

使用React Router 2进行单元测试路由匹配

来自分类Dev

使用备用路由配置进行React Router重定向

来自分类Dev

使用React Router进行导航时保存数据

来自分类Dev

使用react-router对单个路线进行动画处理

来自分类Dev

无法使用React Router获得嵌套路由以进行匹配

来自分类Dev

React Router - 如何使用动态路由进行 IndexRedirect、重定向

来自分类Dev

使用 React-Router 在 ReactJS 中进行身份验证

Related 相关文章

  1. 1

    使用react-router和requirejs进行React的基本设置

  2. 2

    使用react-router和requirejs进行React的基本设置

  3. 3

    如何使用react-intl,react-router-dom v4和TypeScript对React组件进行单元测试

  4. 4

    使用React-Router-Dom创建PrivateRoute

  5. 5

    使用React Router组件进行重定向

  6. 6

    如何使用React正确设置react-router-dom链接

  7. 7

    react-router-dom 不能与 express 和 react 结合使用

  8. 8

    使用React Router和Redux Simple Router进行onEnter转换不会渲染新路由的组件

  9. 9

    使用React,React-Router和Express进行服务器端渲染

  10. 10

    React Router Dom的<Switch>问题

  11. 11

    使用 react-router-dom 在反应中全局使用 Header

  12. 12

    使用 React-hot-loader 3、React-router 4 和 Webpack-hot-middleware 进行 React Hot Reload

  13. 13

    使用webpack和react-router进行延迟加载和代码拆分未加载

  14. 14

    如何在使用中发送参数React Router Dom的历史?

  15. 15

    如何使用CSS在React Router Dom中选择链接标签?

  16. 16

    使用react-router-dom的history.push

  17. 17

    使用React Router DOM处理浏览器后退按钮

  18. 18

    无法使用 switch 语句渲染路由 React router dom 5.0.0

  19. 19

    如何使用 react-router-dom 创建动态路由?

  20. 20

    react-router-dom和Typescript不显示组件

  21. 21

    react-router-dom嵌套的路由和重定向

  22. 22

    带有 Reactstrap 和 React Router Dom 的 Active NavLink

  23. 23

    使用React Router 2进行单元测试路由匹配

  24. 24

    使用备用路由配置进行React Router重定向

  25. 25

    使用React Router进行导航时保存数据

  26. 26

    使用react-router对单个路线进行动画处理

  27. 27

    无法使用React Router获得嵌套路由以进行匹配

  28. 28

    React Router - 如何使用动态路由进行 IndexRedirect、重定向

  29. 29

    使用 React-Router 在 ReactJS 中进行身份验证

热门标签

归档