diff --git a/src/components/TransactionInfiniteList.tsx b/src/components/TransactionInfiniteList.tsx index 326670c6c0..f2e96072c0 100644 --- a/src/components/TransactionInfiniteList.tsx +++ b/src/components/TransactionInfiniteList.tsx @@ -1,9 +1,12 @@ -import React from "react"; +import React, { useMemo } from "react"; import { styled } from "@mui/material/styles"; import { get } from "lodash/fp"; import { useTheme, useMediaQuery, Divider } from "@mui/material"; -import { InfiniteLoader, List, Index } from "react-virtualized"; -import "react-virtualized/styles.css"; // only needs to be imported once +import { VariableSizeList as List } from "react-window"; +// import { InfiniteLoader, List, Index } from "react-virtualized"; +// @ts-ignore +import InfiniteLoader from "react-window-infinite-loader"; +// import "react-virtualized/styles.css"; // only needs to be imported once import TransactionItem from "./TransactionItem"; import { TransactionResponseItem, TransactionPagination } from "../models"; @@ -47,22 +50,23 @@ const TransactionInfiniteList: React.FC = ({ }); }; - const isRowLoaded = (params: Index) => - !pagination.hasNextPages || params.index < transactions.length; + const isRowLoaded = (index: number) => !pagination.hasNextPages || index < transactions.length; - // @ts-ignore - function rowRenderer({ key, index, style }) { - const transaction = get(index, transactions); + const Row = useMemo(() => { + return function Row({ index, style }) { + const transaction = get(index, transactions); - if (index < transactions.length) { - return ( -
- - -
- ); - } - } + if (index < transactions.length) { + return ( +
+ + +
+ ); + } + return null; + }; + }, [transactions, isMobile]); const removePx = (str: string) => +str.slice(0, str.length - 2); @@ -76,14 +80,17 @@ const TransactionInfiniteList: React.FC = ({ {({ onRowsRendered, registerChild }) => (
+ itemSize={() => + isXsBreakpoint ? removePx(theme.spacing(28)) : removePx(theme.spacing(16)) + } + > + {Row} +
)}