Skip to content

Commit ecadab7

Browse files
committed
fix: add useMemo for the render components
1 parent 677442e commit ecadab7

File tree

1 file changed

+31
-23
lines changed

1 file changed

+31
-23
lines changed

package/src/components/Message/MessageSimple/MessageSimple.tsx

Lines changed: 31 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { useState } from 'react';
1+
import React, { useMemo, useState } from 'react';
22
import { Dimensions, LayoutChangeEvent, StyleSheet, View } from 'react-native';
33

44
import { Gesture, GestureDetector } from 'react-native-gesture-handler';
@@ -274,30 +274,38 @@ const MessageSimpleWithContext = <
274274
],
275275
}));
276276

277-
const renderMessageBubble = (
278-
<View style={[styles.contentWrapper, contentWrapper]}>
279-
<MessageContent
280-
backgroundColor={backgroundColor}
281-
noBorder={noBorder}
282-
setMessageContentWidth={setMessageContentWidth}
283-
/>
284-
{reactionListPosition === 'top' && ReactionListTop ? (
285-
<ReactionListTop messageContentWidth={messageContentWidth} />
286-
) : null}
287-
</View>
277+
const renderMessageBubble = useMemo(
278+
() => (
279+
<View style={[styles.contentWrapper, contentWrapper]}>
280+
<MessageContent
281+
backgroundColor={backgroundColor}
282+
noBorder={noBorder}
283+
setMessageContentWidth={setMessageContentWidth}
284+
/>
285+
{reactionListPosition === 'top' && ReactionListTop ? (
286+
<ReactionListTop messageContentWidth={messageContentWidth} />
287+
) : null}
288+
</View>
289+
),
290+
// eslint-disable-next-line react-hooks/exhaustive-deps
291+
[messageContentWidth, reactionListPosition],
288292
);
289293

290-
const renderAnimatedMessageBubble = (
291-
<GestureDetector gesture={swipeGesture}>
292-
<View hitSlop={messageSwipeToReplyHitSlop} style={[styles.contentWrapper, contentWrapper]}>
293-
<Animated.View
294-
style={[styles.swipeContentContainer, swipeContentAnimatedStyle, swipeContentContainer]}
295-
>
296-
{MessageSwipeContent ? <MessageSwipeContent /> : null}
297-
</Animated.View>
298-
<Animated.View style={messageBubbleAnimatedStyle}>{renderMessageBubble}</Animated.View>
299-
</View>
300-
</GestureDetector>
294+
const renderAnimatedMessageBubble = useMemo(
295+
() => (
296+
<GestureDetector gesture={swipeGesture}>
297+
<View hitSlop={messageSwipeToReplyHitSlop} style={[styles.contentWrapper, contentWrapper]}>
298+
<Animated.View
299+
style={[styles.swipeContentContainer, swipeContentAnimatedStyle, swipeContentContainer]}
300+
>
301+
{MessageSwipeContent ? <MessageSwipeContent /> : null}
302+
</Animated.View>
303+
<Animated.View style={messageBubbleAnimatedStyle}>{renderMessageBubble}</Animated.View>
304+
</View>
305+
</GestureDetector>
306+
),
307+
// eslint-disable-next-line react-hooks/exhaustive-deps
308+
[reactionListPosition, messageContentWidth],
301309
);
302310

303311
return (

0 commit comments

Comments
 (0)