Skip to content
Merged
5 changes: 5 additions & 0 deletions .changeset/use-ref-object-add-deps.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@primer/react': patch
---

perf(useRefObjectAsForwardedRef): add dependency array to useImperativeHandle
4 changes: 3 additions & 1 deletion packages/react/src/hooks/useRefObjectAsForwardedRef.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,7 @@ import {useImperativeHandle} from 'react'
* **NOTE**: The `refObject` should be passed to the underlying element, NOT the `forwardedRef`.
*/
export function useRefObjectAsForwardedRef<T>(forwardedRef: ForwardedRef<T>, refObject: RefObject<T | null>): void {
useImperativeHandle<T | null, T | null>(forwardedRef, () => refObject.current)
// The ref object is stable (from useRef), so this factory only needs to run once.
// Without the dependency array, useImperativeHandle re-runs the factory every render.
useImperativeHandle<T | null, T | null>(forwardedRef, () => refObject.current, [refObject])
}
Loading