代码之家  ›  专栏  ›  技术社区  ›  Being47

发出axios请求时出现React Query错误

  •  1
  • Being47  · 技术社区  · 2 年前

    每次尝试发送axios请求以获取数据时,我都会遇到此错误消息的问题。 ' 从v5开始,在调用与查询相关的函数时,只允许使用“Object”窗体。请使用错误堆栈查找罪魁祸首调用。 '

    我仍在学习反应,所以我目前无法通过开发工具找到罪魁祸首。

    这是我调用react查询提供程序的最顶层组件

    应用程序.js

    import {QueryClient, QueryClientProvider} from '@tanstack/react-query';
    
    function App() {
    const client = new QueryClient();
    
    return(
    <div>
    <QueryClientProvider client={client}>
        <ReactQuery/>
    </QueryClientProvider>
    </div>
    );
    };
    

    这就是组件-React Query

    import {BrowserRouter as Router, Routes, Route, Link} from 'react-router-dom';
    import Navbar4 from './Navbar4';
    import ReactHome from './pages/ReactHome';
    import ReactProfile from './pages/ReactProfile';
    import About from './pages/About';
    
    const ReactQuery = () => {
      return (
        <div>
            <h4>React Query</h4>
            <Router>
            <Navbar4/>
                <Routes>
                    <Route path='/' element={<ReactHome/>}/>
                    <Route path='/reactProfile' element={<ReactProfile/>}/>
                    <Route path='about' element={<About/>}/>
                </Routes>
            </Router>
        </div>
      )
    }
    
    export default ReactQuery;
    

    这就是我提交请求的“ReactHome”组件。

    ReactHome.js

    import React from 'react';
    import {useQuery} from '@tanstack/react-query';
    import Axios from 'axios';
    
    const ReactHome = () => {
        const {data} = useQuery(['cat'], () => {
            return Axios.get("https://catfact.ninja/fact").then((res) => res.data);
        });
    
        return (
            <div>
                <p>React Home - {data.fact}</p>
    
            </div>
        )
    }
    
    export default ReactHome;
    

    我正在尝试使用react查询向API发出axios请求。我每次都会出错

    1 回复  |  直到 2 年前
        1
  •  0
  •   Phil    2 年前

    请参阅 API reference for useQuery() 在@tanstack/areact查询v5+中。

    钩子接受具有选项的对象,而不是单独的参数。

    const { data } = useQuery({
      queryKey: ["cat"],
      queryFn: async () => (await Axios.get("https://catfact.ninja/fact")).data,
    });
    

    另请参阅 Migrating to TanStack Query v5

    useQuery和friends过去在TypeScript中有很多重载——调用函数的方式不同。这不仅很难维护,而且还需要运行时检查第一个和第二个参数的类型,才能正确创建选项。

    现在我们只支持对象格式。