Skip to content

Commit e6596a5

Browse files
aarongarciahDiegoAndai
authored andcommitted
[utils] Make getReactElementRef React 19 compatible (mui#44034)
1 parent 26fe14d commit e6596a5

File tree

2 files changed

+8
-10
lines changed

2 files changed

+8
-10
lines changed

packages/mui-utils/src/getReactElementRef/getReactElementRef.test.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@ import * as React from 'react';
55
describe('getReactElementRef', () => {
66
it('should return undefined when not used correctly', () => {
77
// @ts-expect-error
8-
expect(getReactElementRef(false)).to.equal(undefined);
8+
expect(getReactElementRef(false)).to.equal(null);
99
// @ts-expect-error
10-
expect(getReactElementRef()).to.equal(undefined);
10+
expect(getReactElementRef()).to.equal(null);
1111
// @ts-expect-error
12-
expect(getReactElementRef(1)).to.equal(undefined);
12+
expect(getReactElementRef(1)).to.equal(null);
1313

1414
const children = [<div key="1" />, <div key="2" />];
1515
// @ts-expect-error
16-
expect(getReactElementRef(children)).to.equal(undefined);
16+
expect(getReactElementRef(children)).to.equal(null);
1717
});
1818

1919
it('should return the ref of a React element', () => {

packages/mui-utils/src/getReactElementRef/getReactElementRef.ts

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,14 @@ import * as React from 'react';
55
* It will throw runtime error if the element is not a valid React element.
66
*
77
* @param element React.ReactElement
8-
* @returns React.Ref<any> | null | undefined
8+
* @returns React.Ref<any> | null
99
*/
10-
export default function getReactElementRef(
11-
element: React.ReactElement,
12-
): React.Ref<any> | null | undefined {
10+
export default function getReactElementRef(element: React.ReactElement): React.Ref<any> | null {
1311
// 'ref' is passed as prop in React 19, whereas 'ref' is directly attached to children in older versions
1412
if (parseInt(React.version, 10) >= 19) {
15-
return element.props?.ref;
13+
return (element?.props as any)?.ref || null;
1614
}
1715
// @ts-expect-error element.ref is not included in the ReactElement type
1816
// https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/70189
19-
return element?.ref;
17+
return element?.ref || null;
2018
}

0 commit comments

Comments
 (0)