File tree Expand file tree Collapse file tree 3 files changed +34
-4
lines changed Expand file tree Collapse file tree 3 files changed +34
-4
lines changed Original file line number Diff line number Diff line change @@ -19,7 +19,10 @@ export interface ItemProps<ItemType> extends React.HTMLAttributes<any> {
1919 invalidate ?: boolean ;
2020}
2121
22- export default function Item < ItemType > ( props : ItemProps < ItemType > ) {
22+ function InternalItem < ItemType > (
23+ props : ItemProps < ItemType > ,
24+ ref : React . Ref < any > ,
25+ ) {
2326 const {
2427 prefixCls,
2528 invalidate,
@@ -74,6 +77,7 @@ export default function Item<ItemType>(props: ItemProps<ItemType>) {
7477 ...style ,
7578 } }
7679 { ...restProps }
80+ ref = { ref }
7781 >
7882 { childNode }
7983 </ Component >
@@ -93,3 +97,8 @@ export default function Item<ItemType>(props: ItemProps<ItemType>) {
9397
9498 return itemNode ;
9599}
100+
101+ const Item = React . forwardRef ( InternalItem ) ;
102+ Item . displayName = 'Item' ;
103+
104+ export default Item ;
Original file line number Diff line number Diff line change @@ -8,7 +8,7 @@ export interface RawItemProps extends React.HTMLAttributes<any> {
88 children ?: React . ReactNode ;
99}
1010
11- export default function RawItem ( props : RawItemProps ) {
11+ const InternalRawItem = ( props : RawItemProps , ref : React . Ref < any > ) => {
1212 const context = React . useContext ( OverflowContext ) ;
1313
1414 // Render directly when context not provided
@@ -24,10 +24,16 @@ export default function RawItem(props: RawItemProps) {
2424 return (
2525 < OverflowContext . Provider value = { null } >
2626 < Item
27+ ref = { ref }
2728 className = { classNames ( contextClassName , className ) }
2829 { ...restContext }
2930 { ...restProps }
3031 />
3132 </ OverflowContext . Provider >
3233 ) ;
33- }
34+ } ;
35+
36+ const RawItem = React . forwardRef ( InternalRawItem ) ;
37+ RawItem . displayName = 'RawItem' ;
38+
39+ export default RawItem ;
Original file line number Diff line number Diff line change @@ -17,17 +17,32 @@ describe('Overflow.Raw', () => {
1717 }
1818
1919 it ( 'render node directly' , ( ) => {
20+ const elements = new Set < HTMLElement > ( ) ;
21+
2022 const wrapper = mount (
2123 < Overflow < ItemType >
2224 data = { getData ( 1 ) }
2325 renderRawItem = { item => {
24- return < Overflow . Item component = "li" > { item . label } </ Overflow . Item > ;
26+ return (
27+ < Overflow . Item
28+ component = "li"
29+ ref = { ele => {
30+ elements . add ( ele ) ;
31+ } }
32+ >
33+ { item . label }
34+ </ Overflow . Item >
35+ ) ;
2536 } }
2637 itemKey = { item => `bamboo-${ item . key } ` }
2738 component = "ul"
2839 /> ,
2940 ) ;
3041
42+ const elementList = [ ...elements ] ;
43+ expect ( elementList ) . toHaveLength ( 1 ) ;
44+ expect ( elementList [ 0 ] instanceof HTMLLIElement ) . toBeTruthy ( ) ;
45+
3146 expect ( wrapper . render ( ) ) . toMatchSnapshot ( ) ;
3247 } ) ;
3348
You can’t perform that action at this time.
0 commit comments