Commit 1f27d82a5c680a98a7e005d55fec81e8a615a7eb

Authored by zhongnanhuang
1 parent 619f1ac4

feat: update

package-lock.json
@@ -17,7 +17,7 @@ @@ -17,7 +17,7 @@
17 "base-64": "^1.0.0", 17 "base-64": "^1.0.0",
18 "lodash": "^4.17.21", 18 "lodash": "^4.17.21",
19 "print-js": "^1.6.0", 19 "print-js": "^1.6.0",
20 - "react-infinite-scroll-component": "^6.1.0" 20 + "rc-virtual-list": "^3.11.4"
21 }, 21 },
22 "devDependencies": { 22 "devDependencies": {
23 "@inspir/pluto": "^1.0.5", 23 "@inspir/pluto": "^1.0.5",
@@ -19033,9 +19033,9 @@ @@ -19033,9 +19033,9 @@
19033 "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" 19033 "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
19034 }, 19034 },
19035 "node_modules/rc-virtual-list": { 19035 "node_modules/rc-virtual-list": {
19036 - "version": "3.11.3",  
19037 - "resolved": "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.11.3.tgz",  
19038 - "integrity": "sha512-tu5UtrMk/AXonHwHxUogdXAWynaXsrx1i6dsgg+lOo/KJSF8oBAcprh1z5J3xgnPJD5hXxTL58F8s8onokdt0Q==", 19036 + "version": "3.11.4",
  19037 + "resolved": "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.11.4.tgz",
  19038 + "integrity": "sha512-NbBi0fvyIu26gP69nQBiWgUMTPX3mr4FcuBQiVqagU0BnuX8WQkiivnMs105JROeuUIFczLrlgUhLQwTWV1XDA==",
19039 "dependencies": { 19039 "dependencies": {
19040 "@babel/runtime": "^7.20.0", 19040 "@babel/runtime": "^7.20.0",
19041 "classnames": "^2.2.6", 19041 "classnames": "^2.2.6",
@@ -19046,8 +19046,8 @@ @@ -19046,8 +19046,8 @@
19046 "node": ">=8.x" 19046 "node": ">=8.x"
19047 }, 19047 },
19048 "peerDependencies": { 19048 "peerDependencies": {
19049 - "react": "*",  
19050 - "react-dom": "*" 19049 + "react": ">=16.9.0",
  19050 + "react-dom": ">=16.9.0"
19051 } 19051 }
19052 }, 19052 },
19053 "node_modules/react": { 19053 "node_modules/react": {
@@ -19753,25 +19753,6 @@ @@ -19753,25 +19753,6 @@
19753 "react-dom": "^16.6.0 || ^17.0.0 || ^18.0.0" 19753 "react-dom": "^16.6.0 || ^17.0.0 || ^18.0.0"
19754 } 19754 }
19755 }, 19755 },
19756 - "node_modules/react-infinite-scroll-component": {  
19757 - "version": "6.1.0",  
19758 - "resolved": "https://registry.npmjs.org/react-infinite-scroll-component/-/react-infinite-scroll-component-6.1.0.tgz",  
19759 - "integrity": "sha512-SQu5nCqy8DxQWpnUVLx7V7b7LcA37aM7tvoWjTLZp1dk6EJibM5/4EJKzOnl07/BsM1Y40sKLuqjCwwH/xV0TQ==",  
19760 - "dependencies": {  
19761 - "throttle-debounce": "^2.1.0"  
19762 - },  
19763 - "peerDependencies": {  
19764 - "react": ">=16.0.0"  
19765 - }  
19766 - },  
19767 - "node_modules/react-infinite-scroll-component/node_modules/throttle-debounce": {  
19768 - "version": "2.3.0",  
19769 - "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-2.3.0.tgz",  
19770 - "integrity": "sha512-H7oLPV0P7+jgvrk+6mwwwBDmxTaxnu9HMXmloNLXwnNO0ZxZ31Orah2n8lU1eMPvsaowP2CX+USCgyovXfdOFQ==",  
19771 - "engines": {  
19772 - "node": ">=8"  
19773 - }  
19774 - },  
19775 "node_modules/react-is": { 19756 "node_modules/react-is": {
19776 "version": "16.13.1", 19757 "version": "16.13.1",
19777 "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", 19758 "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
@@ -39626,9 +39607,9 @@ @@ -39626,9 +39607,9 @@
39626 } 39607 }
39627 }, 39608 },
39628 "rc-virtual-list": { 39609 "rc-virtual-list": {
39629 - "version": "3.11.3",  
39630 - "resolved": "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.11.3.tgz",  
39631 - "integrity": "sha512-tu5UtrMk/AXonHwHxUogdXAWynaXsrx1i6dsgg+lOo/KJSF8oBAcprh1z5J3xgnPJD5hXxTL58F8s8onokdt0Q==", 39610 + "version": "3.11.4",
  39611 + "resolved": "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.11.4.tgz",
  39612 + "integrity": "sha512-NbBi0fvyIu26gP69nQBiWgUMTPX3mr4FcuBQiVqagU0BnuX8WQkiivnMs105JROeuUIFczLrlgUhLQwTWV1XDA==",
39632 "requires": { 39613 "requires": {
39633 "@babel/runtime": "^7.20.0", 39614 "@babel/runtime": "^7.20.0",
39634 "classnames": "^2.2.6", 39615 "classnames": "^2.2.6",
@@ -40216,21 +40197,6 @@ @@ -40216,21 +40197,6 @@
40216 "shallowequal": "^1.1.0" 40197 "shallowequal": "^1.1.0"
40217 } 40198 }
40218 }, 40199 },
40219 - "react-infinite-scroll-component": {  
40220 - "version": "6.1.0",  
40221 - "resolved": "https://registry.npmjs.org/react-infinite-scroll-component/-/react-infinite-scroll-component-6.1.0.tgz",  
40222 - "integrity": "sha512-SQu5nCqy8DxQWpnUVLx7V7b7LcA37aM7tvoWjTLZp1dk6EJibM5/4EJKzOnl07/BsM1Y40sKLuqjCwwH/xV0TQ==",  
40223 - "requires": {  
40224 - "throttle-debounce": "^2.1.0"  
40225 - },  
40226 - "dependencies": {  
40227 - "throttle-debounce": {  
40228 - "version": "2.3.0",  
40229 - "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-2.3.0.tgz",  
40230 - "integrity": "sha512-H7oLPV0P7+jgvrk+6mwwwBDmxTaxnu9HMXmloNLXwnNO0ZxZ31Orah2n8lU1eMPvsaowP2CX+USCgyovXfdOFQ=="  
40231 - }  
40232 - }  
40233 - },  
40234 "react-is": { 40200 "react-is": {
40235 "version": "16.13.1", 40201 "version": "16.13.1",
40236 "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", 40202 "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
package.json
@@ -22,7 +22,7 @@ @@ -22,7 +22,7 @@
22 "base-64": "^1.0.0", 22 "base-64": "^1.0.0",
23 "lodash": "^4.17.21", 23 "lodash": "^4.17.21",
24 "print-js": "^1.6.0", 24 "print-js": "^1.6.0",
25 - "react-infinite-scroll-component": "^6.1.0" 25 + "rc-virtual-list": "^3.11.4"
26 }, 26 },
27 "devDependencies": { 27 "devDependencies": {
28 "@inspir/pluto": "^1.0.5", 28 "@inspir/pluto": "^1.0.5",
src/pages/Order/components/MessageListDrawer.tsx
@@ -2,16 +2,16 @@ import { RESPONSE_CODE } from '@/constants/enum'; @@ -2,16 +2,16 @@ import { RESPONSE_CODE } from '@/constants/enum';
2 import { postOrderErpMessageQueryMyMessage } from '@/services'; 2 import { postOrderErpMessageQueryMyMessage } from '@/services';
3 import { formatDateTime, getUserInfo } from '@/utils'; 3 import { formatDateTime, getUserInfo } from '@/utils';
4 import { UserOutlined } from '@ant-design/icons'; 4 import { UserOutlined } from '@ant-design/icons';
5 -import { Avatar, Badge, Divider, Drawer, Flex, List, Skeleton } from 'antd'; 5 +import { Avatar, Badge, Drawer, Flex, List } from 'antd';
  6 +import VirtualList from 'rc-virtual-list';
6 import { useEffect, useState } from 'react'; 7 import { useEffect, useState } from 'react';
7 -import InfiniteScroll from 'react-infinite-scroll-component';  
8 8
9 export default ({ setVisible }) => { 9 export default ({ setVisible }) => {
10 const userInfo = getUserInfo(); 10 const userInfo = getUserInfo();
11 const current = useState<number>(1); //当前页码 11 const current = useState<number>(1); //当前页码
12 - const [total, setTotal] = useState(0); 12 + // const [total, setTotal] = useState(0);
13 const [messageListData, setMessageListData] = useState<any[]>([]); //列表数据 13 const [messageListData, setMessageListData] = useState<any[]>([]); //列表数据
14 - 14 + const ContainerHeight = 400;
15 /** 15 /**
16 * 获取消息列表 16 * 获取消息列表
17 */ 17 */
@@ -21,7 +21,7 @@ export default ({ setVisible }) =&gt; { @@ -21,7 +21,7 @@ export default ({ setVisible }) =&gt; {
21 }); 21 });
22 if (res && res.result === RESPONSE_CODE.SUCCESS) { 22 if (res && res.result === RESPONSE_CODE.SUCCESS) {
23 setMessageListData([...messageListData, ...res?.data?.data]); 23 setMessageListData([...messageListData, ...res?.data?.data]);
24 - setTotal(res?.data?.total); 24 + // setTotal(res?.data?.total);
25 } 25 }
26 } 26 }
27 27
@@ -32,10 +32,18 @@ export default ({ setVisible }) =&gt; { @@ -32,10 +32,18 @@ export default ({ setVisible }) =&gt; {
32 window.open('/order?id=' + mainOrderId, '_blank'); 32 window.open('/order?id=' + mainOrderId, '_blank');
33 } 33 }
34 34
35 - function renderTarget() {  
36 - document.getElementsByClassName('ant-drawer-body')[0].id = 'scrollableDiv';  
37 - return document.getElementsByClassName('ant-drawer-body')[0];  
38 - } 35 + const onScroll = (e: React.UIEvent<HTMLElement, UIEvent>) => {
  36 + // Refer to: https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#problems_and_solutions
  37 + if (
  38 + Math.abs(
  39 + e.currentTarget.scrollHeight -
  40 + e.currentTarget.scrollTop -
  41 + ContainerHeight,
  42 + ) <= 1
  43 + ) {
  44 + getMessageListData();
  45 + }
  46 + };
39 47
40 useEffect(() => { 48 useEffect(() => {
41 getMessageListData(); 49 getMessageListData();
@@ -52,17 +60,15 @@ export default ({ setVisible }) =&gt; { @@ -52,17 +60,15 @@ export default ({ setVisible }) =&gt; {
52 width={450} 60 width={450}
53 styles={{ body: { paddingTop: 0 } }} 61 styles={{ body: { paddingTop: 0 } }}
54 > 62 >
55 - <InfiniteScroll  
56 - dataLength={messageListData.length}  
57 - next={getMessageListData}  
58 - hasMore={messageListData.length < total}  
59 - loader={<Skeleton avatar paragraph={{ rows: 1 }} active />}  
60 - endMessage={<Divider plain>没有更多消息了 🤐</Divider>}  
61 - scrollableTarget={renderTarget}  
62 - >  
63 - <List  
64 - dataSource={messageListData}  
65 - renderItem={(item) => ( 63 + <List>
  64 + <VirtualList
  65 + data={messageListData}
  66 + height={400}
  67 + itemHeight={47}
  68 + itemKey="email"
  69 + onScroll={onScroll}
  70 + >
  71 + {(item: any) => (
66 <List.Item key={item.id}> 72 <List.Item key={item.id}>
67 <List.Item.Meta 73 <List.Item.Meta
68 avatar={ 74 avatar={
@@ -94,8 +100,8 @@ export default ({ setVisible }) =&gt; { @@ -94,8 +100,8 @@ export default ({ setVisible }) =&gt; {
94 </Flex> 100 </Flex>
95 </List.Item> 101 </List.Item>
96 )} 102 )}
97 - />  
98 - </InfiniteScroll> 103 + </VirtualList>
  104 + </List>
99 </Drawer> 105 </Drawer>
100 </> 106 </>
101 ); 107 );