React Hooks中forwardRef里面的泛型疑问?

// 子组件
const TabItemChildren = forwardRef<RefHandle, ChildProps>((props, ref) = {})

RefHandle是子组件通过钩子useImperativeHandle中返回的对象类型声明,即抛给父组件中的ref上的属性的类型声明

image.png

image.png

为什么这个泛型是这样的, 这俩个泛型参数顺序不能更换, 我有点看不懂

阅读 3k
4 个回答

猜测应该是出于props可能不需要显示定义类型的考虑

function forwardRef<T, P = {}>(render: ForwardRefRenderFunction<T, P>): ForwardRefExoticComponent<PropsWithoutRef<P> & RefAttributes<T>>;

这是官方类型定义,可以看到props是可选的【默认{}】,可选的泛型只能放在后面,至于render里为什么是props在前,而不跟泛型一致,估计是因为先有的实现才加的类型吧。这方面的原因可能得翻看下git提交历史才能知道

forwardRef的写法就这么定义的,你也可以自己改下

如果你想了解原理,去看一下源代码吧

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏