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'
我最近一直在测试 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'