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

作者站长头像
站长
· 阅读数 9
// 子组件
const TabItemChildren = forwardRef<RefHandle, ChildProps>((props, ref) = {})

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

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

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

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

回复
1个回答
avatar
test
2024-07-02

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

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

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

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容