File tree Expand file tree Collapse file tree 4 files changed +50
-16
lines changed Expand file tree Collapse file tree 4 files changed +50
-16
lines changed 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