Skip to content

Commit 2058c4b

Browse files
EmilyyyLiu刘欢
and
刘欢
authored
feat:renderItem params add "index" (#52)
* feat:renderItem 入参增加 index * chore:更新jest配置 * chore:cheerio 1.0.0版本跑jest有export语法问题,锁定版本为1.0.0-rc.12 --------- Co-authored-by: 刘欢 <[email protected]>
1 parent 64ea78f commit 2058c4b

File tree

4 files changed

+22
-3
lines changed

4 files changed

+22
-3
lines changed

package.json

+3
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,9 @@
8080
"react": ">=16.9.0",
8181
"react-dom": ">=16.9.0"
8282
},
83+
"overrides": {
84+
"cheerio":"1.0.0-rc.12"
85+
},
8386
"cnpm": {
8487
"mode": "npm"
8588
},

src/Item.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export interface ItemProps<ItemType> extends React.HTMLAttributes<any> {
1111
item?: ItemType;
1212
className?: string;
1313
style?: React.CSSProperties;
14-
renderItem?: (item: ItemType) => React.ReactNode;
14+
renderItem?: (item: ItemType, info: { index: number }) => React.ReactNode;
1515
responsive?: boolean;
1616
// https://github.com/ant-design/ant-design/issues/35475
1717
/**
@@ -66,7 +66,7 @@ function InternalItem<ItemType>(
6666

6767
// ================================ Render ================================
6868
const childNode =
69-
renderItem && item !== UNDEFINED ? renderItem(item) : children;
69+
renderItem && item !== UNDEFINED ? renderItem(item, { index: order }) : children;
7070

7171
let overflowStyle: React.CSSProperties | undefined;
7272
if (!invalidate) {

src/Overflow.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export interface OverflowProps<ItemType> extends React.HTMLAttributes<any> {
2424
itemKey?: React.Key | ((item: ItemType) => React.Key);
2525
/** Used for `responsive`. It will limit render node to avoid perf issue */
2626
itemWidth?: number;
27-
renderItem?: (item: ItemType) => React.ReactNode;
27+
renderItem?: (item: ItemType, info: { index: number }) => React.ReactNode;
2828
/** @private Do not use in your production. Render raw node that need wrap Item by developer self */
2929
renderRawItem?: (item: ItemType, index: number) => React.ReactElement;
3030
maxCount?: number | typeof RESPONSIVE | typeof INVALIDATE;

tests/index.spec.tsx

+16
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,22 @@ describe('Overflow.Basic', () => {
5151
expect(wrapper.find('Item').text()).toEqual('Bamboo Is Light');
5252
});
5353

54+
it('renderItem params have "order"', () => {
55+
const testData = getData(3);
56+
const wrapper = mount(
57+
<Overflow
58+
data={testData}
59+
renderItem={(item, info) => {
60+
return `${item.label}-${info.index}-test`;
61+
}}
62+
/>,
63+
);
64+
const renderedItems = wrapper.find('.rc-overflow-item');
65+
expect(renderedItems).toHaveLength(testData.length);
66+
renderedItems.forEach((node, index) => {
67+
expect(node.text()).toBe(`${testData[index].label}-${index}-test`);
68+
});
69+
});
5470
describe('renderRest', () => {
5571
it('function', () => {
5672
const wrapper = mount(

0 commit comments

Comments
 (0)