Skip to content

Commit 383dc67

Browse files
committed
refactor: optimize ListComponent by improving memoization and error handling
1 parent 4e95853 commit 383dc67

1 file changed

Lines changed: 15 additions & 15 deletions

File tree

src/components/List/ListComponent.tsx

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
import React, { ReactNode, useMemo } from 'react'
1+
import React, { memo, ReactNode, useMemo } from 'react'
22
import { Placeholder } from 'src/components/placeholders'
33
import { MAX_ITEMS_PER_CARD } from 'src/config'
44

55
type PlaceholdersProps = {
66
placeholder: ReactNode
77
}
88

9-
const Placeholders = React.memo<PlaceholdersProps>(({ placeholder }) => {
9+
const Placeholders = memo<PlaceholdersProps>(({ placeholder }) => {
1010
return (
1111
<>
1212
{[...Array(7)].map((_, i) => (
@@ -42,18 +42,6 @@ export function ListComponent<T extends any>(props: ListComponentPropsType<T>) {
4242
limit = MAX_ITEMS_PER_CARD,
4343
} = props
4444

45-
if (error) {
46-
return <p className="errorMsg">{error?.message || error}</p>
47-
}
48-
49-
if (items && items.length == 0) {
50-
return (
51-
<p className="errorMsg">
52-
No items found, try adjusting your filter or choosing a different tag.
53-
</p>
54-
)
55-
}
56-
5745
const sortedData = useMemo(() => {
5846
if (!items || items.length == 0) return []
5947
if (!sortBy) return items
@@ -88,7 +76,19 @@ export function ListComponent<T extends any>(props: ListComponentPropsType<T>) {
8876
} catch (e) {
8977
return []
9078
}
91-
}, [sortedData])
79+
}, [sortedData, header, renderItem, limit])
80+
81+
if (error) {
82+
return <p className="errorMsg">{error?.message || error}</p>
83+
}
84+
85+
if (items && items.length == 0) {
86+
return (
87+
<p className="errorMsg">
88+
No items found, try adjusting your filter or choosing a different tag.
89+
</p>
90+
)
91+
}
9292

9393
return <>{isLoading ? <Placeholders placeholder={placeholder} /> : enrichedItems}</>
9494
}

0 commit comments

Comments
 (0)