#react-native #mobile #frontend #hybrid-mobile-app
#react-native #Мобильный #интерфейс #гибрид-мобильное приложение
Вопрос:
На самом деле я пытаюсь создать приложение для чата, в котором я отображал все чаты с использованием плоских списков, и я упорядочил чаты в соответствии с их последним временем сообщения в порядке убывания, при изменении порядка сообщений чата изображение в компоненте чата мерцает. Пожалуйста, предложите мне способ предотвратить это мерцание, в WhatsApp и telegram мерцания не происходит, я также хочу иметь плавный пользовательский интерфейс в моем приложении для чата.
Я использовал React Native для интерфейса.
Вот код плоского списка..
<FlatList
data={state.connections}
refreshing={state.loading}
onRefresh={fetchLatestData}
ListHeaderComponent={<Searchbar
key="editor"
placeholder="Search me..."
value={state.searchValue}
style={{ margin: 15, marginTop: 0 }}
onChangeText={(value) => { fetchConnections(value) }}
/>}
ListHeaderComponentStyle={{ width: width * 1 }}
renderItem={({ item }) => {
let doc_id = getDocId(item.uid, state.userData.uid)
return <ChatCardComponent key={item.uid} data={item} navigation={navigation} userData={state.userData} latestMessageData={state.chattedFriends.get(doc_id)} />
}}
keyExtractor={(item, id) => item.uid}
/>
ChatCardComponentCode является,
Я использовал react-native-expo-cached-image для компонента изображения
const uri = data.photoUrl;
return (
<View style={styles.container}>
<TouchableOpacity key={data.uid} onPress={() => { props.navigation.navigate('chatWindow', { data: data, userData: userData }) }}>
<View style={styles.chatContainer}>
<CachedImage
style={{ width: 80, height: 80, borderRadius: 60 }}
source={{ uri: uri }}
/>
</View>
</TouchableOpacity>
</View>
Пожалуйста, предложите мне исправить эту проблему.
Комментарии:
1. Пожалуйста, поделитесь своим кодом или минимальным рабочим кодом, чтобы другие могли помочь вам с проблемой 🙂 и проверьте, дали ли вы ключ для элементов в flatlist
2. Это распространенная проблема, когда речь идет о плоском списке, убедитесь, что вы кэшируете изображение, а затем повторно используете его или запоминаете весь компонент элемента.
3. @GuruparanGiritharan Пожалуйста, ознакомьтесь с кодом, я добавил его сейчас