我正在使用Next.js为我的投资组合建立一个项目.而且,我正在try 使用Tanstack queryAxios来处理API.问题是,我在try 获取数据时遇到错误.数据是从API中获取的,当我在函数内部console.log时可以看到它,但当我试图在函数外访问它时,它返回undefined.

下面是我的函数代码:

const Home = () => {

  const {data} = useQuery({
    queryKey: ['products'],
  
    queryFn: async () => {
      const res = await axios.get(
        'https://fakestoreapi.com/products'
      )
      const data = await res.data
      console.log(data)
      //can access data here
    }
  })
  
  console.log(data)
  //cannot access data here and returns undefined.

  return (
    <section>
      //some codes here
    </section>
  )
}

我在控制台中也收到此错误:

查询数据不能未定义.请确保返回值 而不是您的查询函数中未定义的.受影响的查询关键字: ["产品"]

我到处寻找修复程序,但没有找到任何导致这一问题的线索.有人能帮我解决这个问题吗?

推荐答案

作为值传递给queryFn的函数不返回任何内容,因此当它解析时,它返回undefined.这应该是可行的:

const Home = () => {
  const { data } = useQuery({
    queryKey: ["products"],
    queryFn: async () => {
      const res = await axios.get("https://fakestoreapi.com/products");
      return res.data;
    },
  });

  return <section>{/* some codes here */}</section>;
};

Javascript相关问答推荐

React中的表格中 Select Radio按钮

CSS背景过滤器忽略转换持续时间(ReactJS)

JavaScript替换子 node 导致它们更改为[对象HTMLTable SectionElement]

获取最接近的父项(即自定义元素)

如何在alpinejs中显示dev中x-for的元素

如何使用JavaScript动态地将CSS应用于ToDo列表?

橡皮擦完全让画布变成白色

在JS中获取名字和姓氏的首字母

如何编辑代码FlipDown.js倒计时?

字节数组通过echo框架传输到JS blob

useNavigation更改URL,但不呈现或显示组件

未捕获错误:[]:getActivePinia()被调用,但没有活动Pinia.🍍""在调用app.use(pinia)之前,您是否try 使用store ?""

手机上的渲染错误文本必须在文本组件中渲染,但在浏览器上没有问题<><>

引用在HTMLAttributes<;HTMLDivElement>;中不可用

如果Arrow函数返回函数,而不是为useEffect返回NULL,则会出现错误

有条件重定向到移动子域

将范围 Select 器添加到HighChart面积图

为列表中的项目设置动画

用于部分字符串的JavaScript数组搜索

如何在下一个js中更改每个标记APEXCHARTS图表的 colored颜色