File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Load Diff This file was deleted.
Original file line number Diff line number Diff line change 6767 "rc-test" : " ^7.0.14" ,
6868 "react" : " ^18.0.0" ,
6969 "react-dom" : " ^18.0.0" ,
70+ "react-19" : " npm:react@19.0.0-rc-de68d2f4-20241204" ,
71+ "react-dom-19" : " npm:react-dom@19.0.0-rc-de68d2f4-20241204" ,
7072 "typescript" : " ^5.3.2"
7173 },
7274 "peerDependencies" : {
Original file line number Diff line number Diff line change @@ -81,19 +81,13 @@ export const supportNodeRef = <T = any>(
8181 */
8282export const getNodeRef : < T = any > (
8383 node : React . ReactNode ,
84- ) => React . Ref < T > | null =
85- Number ( version . split ( '.' ) [ 0 ] ) >= 19
86- ? // >= React 19
87- node => {
88- if ( isReactElement ( node ) ) {
89- return ( node as any ) . props . ref ;
90- }
91- return null ;
92- }
93- : // < React 19
94- node => {
95- if ( isReactElement ( node ) ) {
96- return ( node as any ) . ref ;
97- }
98- return null ;
99- } ;
84+ ) => React . Ref < T > | null = node => {
85+ if ( node && isReactElement ( node ) ) {
86+ const ele = node as any ;
87+
88+ // Source from:
89+ // https://github.com/mui/material-ui/blob/master/packages/mui-utils/src/getReactNodeRef/getReactNodeRef.ts
90+ return ele . props . propertyIsEnumerable ( 'ref' ) ? ele . props . ref : ele . ref ;
91+ }
92+ return null ;
93+ } ;
Original file line number Diff line number Diff line change 1+ /* eslint-disable no-eval */
2+ import React from 'react' ;
3+ import { getNodeRef } from '../src/ref' ;
4+
5+ jest . mock ( 'react' , ( ) => {
6+ const react19 = jest . requireActual ( 'react-19' ) ;
7+ return react19 ;
8+ } ) ;
9+
10+ jest . mock ( 'react-dom' , ( ) => {
11+ const reactDom19 = jest . requireActual ( 'react-dom-19' ) ;
12+ return reactDom19 ;
13+ } ) ;
14+
15+ describe ( 'ref: React 19' , ( ) => {
16+ const errSpy = jest . spyOn ( console , 'error' ) ;
17+
18+ beforeEach ( ( ) => {
19+ errSpy . mockReset ( ) ;
20+ } ) ;
21+
22+ it ( 'getNodeRef' , ( ) => {
23+ const ref = React . createRef < HTMLDivElement > ( ) ;
24+ const node = < div ref = { ref } /> ;
25+
26+ expect ( getNodeRef ( node ) ) . toBe ( ref ) ;
27+
28+ expect ( errSpy ) . not . toHaveBeenCalled ( ) ;
29+ } ) ;
30+ } ) ;
Original file line number Diff line number Diff line change @@ -12,6 +12,12 @@ import {
1212} from '../src/ref' ;
1313
1414describe ( 'ref' , ( ) => {
15+ const errSpy = jest . spyOn ( console , 'error' ) ;
16+
17+ beforeEach ( ( ) => {
18+ errSpy . mockReset ( ) ;
19+ } ) ;
20+
1521 describe ( 'composeRef' , ( ) => {
1622 it ( 'basic' , ( ) => {
1723 const refFunc1 = jest . fn ( ) ;
@@ -207,5 +213,7 @@ describe('ref', () => {
207213 const node = < div ref = { ref } /> ;
208214
209215 expect ( getNodeRef ( node ) ) . toBe ( ref ) ;
216+
217+ expect ( errSpy ) . not . toHaveBeenCalled ( ) ;
210218 } ) ;
211219} ) ;
You can’t perform that action at this time.
0 commit comments