1

我最近一直在测试Vercel 的 SWR,它看起来是 Next.js 数据获取的最佳库。我在让它与 TypeScript 一起工作时遇到了一些麻烦。

正如在文档中我正在尝试使用以下代码构建一个无限加载器:

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 函数,但没有运气,总是会出现错误。

有什么提示吗?

4

1 回答 1

2

TypeScript 将返回类型标识为这一事实SWRResponse表明您可能正在导入默认导出(useSWR钩子)swr而不是useSWRInfinite钩子。

import useSWR from 'swr'

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

import { useSWRInfinite } from 'swr'

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

import useSWRInfinite from 'swr/infinite'
于 2021-06-29T21:08:48.273 回答