首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React 18型useCallback未出口

React 18型useCallback未出口
EN

Stack Overflow用户
提问于 2022-06-28 17:48:29
回答 1查看 110关注 0票数 0

我升级到了反应18,并且在typeof useCallback上遇到了麻烦。我以前可以这样做:

代码语言:javascript
复制
import type { UseCallback } from 'react'

interface MyComponentProps {
  onChange: UseCallback<(value: boolean) => void>;
}

但是,现在UseCallback不再从react导出,在执行此操作时我会得到一个错误:

代码语言:javascript
复制
type CallbackFn = (value: boolean) => void;

interface MyComponentProps {
  onChange: ReturnType<typeof useCallback<CallbackFn>>.  //Parsing error: '>' expected.eslint
}

有谁知道如何强制用户传递由onChange包装的useCallback

EN

回答 1

Stack Overflow用户

发布于 2022-06-28 20:49:35

我认为没有任何方法可以强制函数通过useCallback传递,因为它不会改变函数的类型。useCallback类型记录的定义是:

代码语言:javascript
复制
    function useCallback<T extends Function>(callback: T, deps: DependencyList): T;

它接受一个类型为T的函数,并返回类型T,因此它们是不可区分的。

我能想到的处理这个问题的唯一方法是围绕useCallback制作自己的包装器,它返回某种格式的{fn: T, __isCallback: true},并让您的道具接受这种类型。从技术上讲,开发人员也可以手动传递该对象,但它将引导他们使用自定义useCallbackTyped的返回。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72791036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档