react.ts 565 B

123456789101112131415161718192021
  1. import { forwardRef } from 'react'
  2. export const fixedForwardRef = <
  3. T,
  4. P = object,
  5. A extends Record<string, React.FunctionComponent> = Record<
  6. string,
  7. React.FunctionComponent
  8. >,
  9. >(
  10. render: (props: P, ref: React.Ref<T>) => React.ReactElement | null,
  11. propsToAttach: A = {} as A
  12. ): ((props: P & React.RefAttributes<T>) => React.ReactElement | null) & A => {
  13. const ForwardReferredComponent = forwardRef(render) as any
  14. for (const i in propsToAttach) {
  15. ForwardReferredComponent[i] = propsToAttach[i]
  16. }
  17. return ForwardReferredComponent
  18. }