SWR 大小,setSize 在 SWRResponse<any, any> 类型上不存在?

SWR size, setSize do not exist on type SWRResponse<any, any>?

我最近一直在测试 Vercel's SWR,它看起来是 Next.js 数据获取的最佳库。不过,我在使用 TypeScript 时遇到了一些问题。

docs 一样,我正在尝试使用以下代码构建无限加载器:

const { data, error, isValidating, mutate, size, setSize } = useSWRInfinite(
  getKey, fetcher?, options?
)

但我遇到了这些错误:

Property 'size' does not exist on type 'SWRResponse<any, any>'.ts(2339)
Property 'setSize' does not exist on type 'SWRResponse<any, any>'.ts(2339)

其余参数似乎都存在,只有最后两个不存在。我在这里错过了什么?它在没有 TypeScript 的情况下工作得很好。我有最新版本的 Next 和 SWR。我尝试按照教程添加 getKey 函数,但运气不好,总是会出现错误。

有什么提示吗?

TypeScript 将 return 类型标识为 SWRResponse 这一事实表明您可能正在导入 swr 的默认导出(useSWR 挂钩)而不是 useSWRInfinite勾.

import useSWR from 'swr'

确保从其命名的导出中导入 useSWRInfinite

import { useSWRInfinite } from 'swr'

版本 1.x 开始,导入 useSWRInfinite 的语法略有变化。您现在应该使用:

import useSWRInfinite from 'swr/infinite'