Я пытаюсь создать приложение для чата, используя родной ответ. Я использую flatlist для перечисления сообщений разговора.
export default class ExampleConversation extends React.Component {
_renderItem = ({item}) => {
return (
<View style={{backgroundColor: 'white', margin: 4, flexDirection: 'row'}}>
<Text>{item.sender.id}</Text>
<Text>{item.body}</Text>
</View>
)
};
render() {
return <FlatList
data={data}
renderItem={this._renderItem}
keyExtractor={(item, id) => item.id}
style={styles.container}
inverted={true}/>
}
}
Данные JSON, полученные с сервера:
const data = [
{
"id": 13,
"sender_id": 1,
"body": "Some message"
},
{
"id": 12,
"sender_id": 1,
"body": "Some message"
},
{
"id": 11,
"sender_id": 5,
"body": "Some message"
}
];
Как видно из приведенных выше данных, и первое, и второе сообщения отправлены одним и тем же отправителем (sender_id: 1
). Когда предыдущее сообщение и текущее сообщение от одного и того же отправителя, я хотел бы удалить <Text>{sender_id}</Text>
для этого объекта сообщения.
return (
<View style={{backgroundColor: 'white', margin: 4, flexDirection: 'row'}}>
<Text>{item.body}</Text>
</View>
)
По сути, я хотел бы изменить макет компонента Message, проверив элементы, заданные для данных Flatlist, очень похоже на то, как мессенджер facebook отображает свои сообщения.
Как я могу различать предыдущий и текущий элементы по его ключевым значениям данных Flatlist?