Memoize renderItem

This commit is contained in:
Eric Bailey
2024-08-02 12:36:03 -05:00
parent 6dffe623d0
commit 7d01503f07
+43 -40
View File
@@ -129,46 +129,49 @@ export const ProfileFeedgens = React.forwardRef<
// rendering // rendering
// = // =
const renderItem = ({item, index}: ListRenderItemInfo<any>) => { const renderItem = React.useCallback(
if (item === EMPTY) { ({item, index}: ListRenderItemInfo<any>) => {
return ( if (item === EMPTY) {
<EmptyState return (
icon="hashtag" <EmptyState
message={_(msg`You have no feeds.`)} icon="hashtag"
testID="listsEmpty" message={_(msg`You have no feeds.`)}
/> testID="listsEmpty"
) />
} else if (item === ERROR_ITEM) { )
return ( } else if (item === ERROR_ITEM) {
<ErrorMessage message={cleanError(error)} onPressTryAgain={refetch} /> return (
) <ErrorMessage message={cleanError(error)} onPressTryAgain={refetch} />
} else if (item === LOAD_MORE_ERROR_ITEM) { )
return ( } else if (item === LOAD_MORE_ERROR_ITEM) {
<LoadMoreRetryBtn return (
label={_( <LoadMoreRetryBtn
msg`There was an issue fetching your lists. Tap here to try again.`, label={_(
)} msg`There was an issue fetching your lists. Tap here to try again.`,
onPress={onPressRetryLoadMore} )}
/> onPress={onPressRetryLoadMore}
) />
} else if (item === LOADING) { )
return <FeedLoadingPlaceholder /> } else if (item === LOADING) {
} return <FeedLoadingPlaceholder />
if (preferences) { }
return ( if (preferences) {
<View return (
style={[ <View
(index !== 0 || isWeb) && a.border_t, style={[
t.atoms.border_contrast_low, (index !== 0 || isWeb) && a.border_t,
a.px_lg, t.atoms.border_contrast_low,
a.py_lg, a.px_lg,
]}> a.py_lg,
<FeedCard.Default view={item} /> ]}>
</View> <FeedCard.Default view={item} />
) </View>
} )
return null }
} return null
},
[_, t, error, refetch, onPressRetryLoadMore, preferences],
)
React.useEffect(() => { React.useEffect(() => {
if (enabled && scrollElRef.current) { if (enabled && scrollElRef.current) {