react.js - React Hooks中forwardRef里面的泛型疑问?
问题描述:
// 子组件 const TabItemChildren = forwardRef<RefHandle, ChildProps>((props, ref) = {})
RefHandle是子组件通过钩子useImperativeHandle中返回的对象类型声明,即抛给父组件中的ref上的属性的类型声明
为什么这个泛型是这样的, 这俩个泛型参数顺序不能更换, 我有点看不懂
第 1 个答案:
猜测应该是出于props
可能不需要显示定义类型的考虑
function forwardRef<T, P = {}>(render: ForwardRefRenderFunction<T, P>): ForwardRefExoticComponent<PropsWithoutRef<P> & RefAttributes<T>>;
这是官方类型定义,可以看到props
是可选的【默认{}】,可选的泛型只能放在后面,至于render
里为什么是props
在前,而不跟泛型一致,估计是因为先有的实现才加的类型吧。这方面的原因可能得翻看下git提交历史才能知道
第 2 个答案:
forwardRef的写法就这么定义的,你也可以自己改下
第 3 个答案:
官网就是这样定义的:https://react.dev/reference/react/forwardRef
第 4 个答案:
如果你想了解原理,去看一下源代码吧
像indexedDB这种浏览器提供的大容量的本地数据库,具有什么应用场景呢?