@@ -44,7 +44,7 @@ export interface SegmentedProps<ValueType = SegmentedValue>
4444 name ?: string ;
4545 classNames ?: Partial < Record < SemanticName , string > > ;
4646 styles ?: Partial < Record < SemanticName , React . CSSProperties > > ;
47- itemRender ?: ( node : React . ReactNode ) => React . ReactNode ;
47+ itemRender ?: ( node : React . ReactNode , itemInfo : ItemInfo ) => React . ReactNode ;
4848}
4949
5050function getValidTitle ( option : SegmentedLabeledOption ) {
@@ -75,7 +75,7 @@ function normalizeOptions(options: SegmentedOptions): SegmentedLabeledOption[] {
7575 } ) ;
7676}
7777
78- const InternalSegmentedOption : React . FC < {
78+ interface ItemInfo {
7979 prefixCls : string ;
8080 className ?: string ;
8181 style ?: React . CSSProperties ;
@@ -87,7 +87,6 @@ const InternalSegmentedOption: React.FC<{
8787 title ?: string ;
8888 value : SegmentedRawOption ;
8989 name ?: string ;
90- itemRender ?: ( node : React . ReactNode ) => React . ReactNode ;
9190 onChange : (
9291 e : React . ChangeEvent < HTMLInputElement > ,
9392 value : SegmentedRawOption ,
@@ -97,26 +96,33 @@ const InternalSegmentedOption: React.FC<{
9796 onKeyDown : ( e : React . KeyboardEvent ) => void ;
9897 onKeyUp : ( e : React . KeyboardEvent ) => void ;
9998 onMouseDown : ( ) => void ;
100- } > = ( {
101- prefixCls,
102- className,
103- style,
104- styles,
105- classNames : segmentedClassNames ,
106- disabled,
107- checked,
108- label,
109- title,
110- value,
111- name,
112- itemRender = ( node : React . ReactNode ) => node ,
113- onChange,
114- onFocus,
115- onBlur,
116- onKeyDown,
117- onKeyUp,
118- onMouseDown,
119- } ) => {
99+ }
100+
101+ const InternalSegmentedOption : React . FC <
102+ {
103+ itemRender ?: ( node : React . ReactNode , itemInfo : ItemInfo ) => React . ReactNode ;
104+ } & ItemInfo
105+ > = ( props ) => {
106+ const {
107+ prefixCls,
108+ className,
109+ style,
110+ styles,
111+ classNames : segmentedClassNames ,
112+ disabled,
113+ checked,
114+ label,
115+ title,
116+ value,
117+ name,
118+ itemRender = ( node : React . ReactNode ) => node ,
119+ onChange,
120+ onFocus,
121+ onBlur,
122+ onKeyDown,
123+ onKeyUp,
124+ onMouseDown,
125+ } = props ;
120126 const handleChange = ( event : React . ChangeEvent < HTMLInputElement > ) => {
121127 if ( disabled ) {
122128 return ;
@@ -157,7 +163,10 @@ const InternalSegmentedOption: React.FC<{
157163 </ div >
158164 </ label >
159165 ) ;
160- return itemRender ( ItemContent ) ;
166+
167+ const renderProps = { ...props } ;
168+ delete renderProps . itemRender ;
169+ return itemRender ( ItemContent , renderProps ) ;
161170} ;
162171
163172const Segmented = React . forwardRef < HTMLDivElement , SegmentedProps > (
0 commit comments