javascript - hook.useHook 在实现新端点 NextJS 时不是一个函数
问题描述
我遇到了TypeError: hook.useHook is not a function
下面的错误。
我是一个绝望的举动,我已经放置了很多类型,any
但正如你猜到的那样,这并没有解决它。
这是我的use-subscription.tsx
文件
import ...
export type UseSubscribe<
H extends MutationHook<any> = MutationHook<any>
> = ReturnType<H['useHook']>
export const fetcher: HookFetcherFn<any> = mutationFetcher
const fn = (provider: Provider) => provider.subscriptions?.useSubscriptions!
const useSubscribe: any = (...args: any) => {
const hook = useHook(fn)
return useMutationHook({ fetcher, ...hook })(...args)
}
export default useSubscribe
我不确定问题是什么,如果不是关于类型,我什至不知道要寻找什么,我试图将其更改为any
.
这是use-hook.ts
export function useFetcher() {
const { providerRef, fetcherRef } = useCommerce()
return providerRef.current.fetcher ?? fetcherRef.current
}
export function useHook<
P extends Provider,
H extends MutationHook<any> | SWRHook<any>
>(fn: (provider: P) => H) {
const { providerRef } = useCommerce<P>()
const provider = providerRef.current
return fn(provider)
}
export function useSWRHook<H extends SWRHook<any>>(
hook: PickRequired<H, 'fetcher'>
) {
const fetcher = useFetcher()
return hook.useHook({
useData(ctx) {
const response = useData(hook, ctx?.input ?? [], fetcher, ctx?.swrOptions)
return response
},
})
}
export function useMutationHook<H extends MutationHook<any>>(
hook: PickRequired<H, 'fetcher'>
) {
const fetcher = useFetcher()
return hook.useHook({
fetch: useCallback(
({ input } = {}) => {
return hook.fetcher({
input,
options: hook.fetchOptions,
fetch: fetcher,
})
},
[fetcher, hook.fetchOptions]
),
})
}
如果有人对此问题感兴趣,您可以在https://github.com/vercel/commerce中找到更多信息,我将其用作创建我的基础存储库。
解决方案
推荐阅读
- pyspark - 在满足条件之前返回行值的排序行的火花聚合
- javascript - 在拖动时获取 Div 的新左侧位置百分比
- python - 用于句子分类的 Huggingface GPT2 和 T5 模型 API?
- javascript - 协助归因于 Silverpop
- php - 仅选择数组 1 中的值并存在于数组 2 中
- laravel - 有人可以在尝试创建自定义工具时解释这个错误吗?
- python - 使用 Altair 在堆积面积图中堆积文本
- apache-spark - 如何使用 Python 对象而不是 Java 对象打印数据框的模式?
- javascript - 如何将 ViewData 值分配给 JavaScript 变量?
- c++ - 如何在 QT 中使用 QFileDialog 打开特定目录