Skip to content

Commit a09d645

Browse files
author
刘欢
committed
feat:修改renderItem 的index参数位置
1 parent a2e4470 commit a09d645

File tree

2 files changed

+31
-31
lines changed

2 files changed

+31
-31
lines changed

src/Item.tsx

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
1-
import * as React from 'react';
21
import classNames from 'classnames';
32
import ResizeObserver from 'rc-resize-observer';
4-
import type { ItemWithIndex } from './Overflow';
3+
import * as React from 'react';
54
import type { ComponentType } from './RawItem';
65

76
// Use shared variable to save bundle size
87
const UNDEFINED = undefined;
98

109
export interface ItemProps<ItemType> extends React.HTMLAttributes<any> {
1110
prefixCls: string;
12-
item?: ItemWithIndex<ItemType>;
11+
item?: ItemType;
1312
className?: string;
1413
style?: React.CSSProperties;
15-
renderItem?: (item: ItemWithIndex<ItemType>) => React.ReactNode;
14+
renderItem?: (item: ItemType, info: { index: number }) => React.ReactNode;
1615
responsive?: boolean;
1716
// https://github.com/ant-design/ant-design/issues/35475
1817
/**
@@ -67,7 +66,9 @@ function InternalItem<ItemType>(
6766

6867
// ================================ Render ================================
6968
const childNode =
70-
renderItem && item !== UNDEFINED ? renderItem(item) : children;
69+
renderItem && item !== UNDEFINED
70+
? renderItem(item, { index: order })
71+
: children;
7172

7273
let overflowStyle: React.CSSProperties | undefined;
7374
if (!invalidate) {

src/Overflow.tsx

Lines changed: 25 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@ export { OverflowContext } from './context';
1616

1717
export type { ComponentType } from './RawItem';
1818

19-
export type ItemWithIndex<ItemType> = ItemType & { index?: number };
20-
2119
export interface OverflowProps<ItemType> extends React.HTMLAttributes<any> {
2220
prefixCls?: string;
2321
className?: string;
@@ -26,7 +24,7 @@ export interface OverflowProps<ItemType> extends React.HTMLAttributes<any> {
2624
itemKey?: React.Key | ((item: ItemType) => React.Key);
2725
/** Used for `responsive`. It will limit render node to avoid perf issue */
2826
itemWidth?: number;
29-
renderItem?: (item: ItemWithIndex<ItemType>) => React.ReactNode;
27+
renderItem?: (item: ItemType, info: { index: number }) => React.ReactNode;
3028
/** @private Do not use in your production. Render raw node that need wrap Item by developer self */
3129
renderRawItem?: (item: ItemType, index: number) => React.ReactElement;
3230
maxCount?: number | typeof RESPONSIVE | typeof INVALIDATE;
@@ -343,13 +341,12 @@ function Overflow<ItemType = any>(
343341
}
344342
: (item: ItemType, index: number) => {
345343
const key = getKey(item, index);
346-
const propsItem: ItemWithIndex<ItemType> = { ...item, index };
347344
return (
348345
<Item
349346
{...itemSharedProps}
350347
order={index}
351348
key={key}
352-
item={propsItem}
349+
item={item}
353350
renderItem={mergedRenderItem}
354351
itemKey={key}
355352
registerSize={registerSize}
@@ -368,26 +365,26 @@ function Overflow<ItemType = any>(
368365

369366
const mergedRenderRest = renderRest || defaultRenderRest;
370367

371-
const restNode = renderRawRest ? (
372-
<OverflowContext.Provider
373-
value={{
374-
...itemSharedProps,
375-
...restContextProps,
376-
}}
377-
>
378-
{renderRawRest(omittedItems)}
379-
</OverflowContext.Provider>
380-
) : (
381-
<Item
382-
{...itemSharedProps}
383-
// When not show, order should be the last
384-
{...restContextProps}
385-
>
386-
{typeof mergedRenderRest === 'function'
387-
? mergedRenderRest(omittedItems)
388-
: mergedRenderRest}
389-
</Item>
390-
);
368+
const restNode = renderRawRest ? (
369+
<OverflowContext.Provider
370+
value={{
371+
...itemSharedProps,
372+
...restContextProps,
373+
}}
374+
>
375+
{renderRawRest(omittedItems)}
376+
</OverflowContext.Provider>
377+
) : (
378+
<Item
379+
{...itemSharedProps}
380+
// When not show, order should be the last
381+
{...restContextProps}
382+
>
383+
{typeof mergedRenderRest === 'function'
384+
? mergedRenderRest(omittedItems)
385+
: mergedRenderRest}
386+
</Item>
387+
);
391388

392389
const overflowNode = (
393390
<Component
@@ -423,7 +420,9 @@ function Overflow<ItemType = any>(
423420
<ResizeObserver onResize={onOverflowResize} disabled={!shouldResponsive}>
424421
{overflowNode}
425422
</ResizeObserver>
426-
) : overflowNode;
423+
) : (
424+
overflowNode
425+
);
427426
}
428427

429428
const ForwardOverflow = React.forwardRef(Overflow);

0 commit comments

Comments
 (0)