React Hooks中forwardRef里面的泛型疑问?
// 子组件
const TabItemChildren = forwardRef<RefHandle, ChildProps>((props, ref) = {})
RefHandle是子组件通过钩子useImperativeHandle中返回的对象类型声明,即抛给父组件中的ref上的属性的类型声明
为什么这个泛型是这样的, 这俩个泛型参数顺序不能更换, 我有点看不懂
回复
1个回答
test
2024-07-02
猜测应该是出于props
可能不需要显示定义类型的考虑
function forwardRef<T, P = {}>(render: ForwardRefRenderFunction<T, P>): ForwardRefExoticComponent<PropsWithoutRef<P> & RefAttributes<T>>;
这是官方类型定义,可以看到props
是可选的【默认{}】,可选的泛型只能放在后面,至于render
里为什么是props
在前,而不跟泛型一致,估计是因为先有的实现才加的类型吧。这方面的原因可能得翻看下git提交历史才能知道
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容