Я использую response-native-gifted-chat (https://github.com/FaridSafi/react-native-gifted-chat) для создания интерфейса чата в моем приложении, я хочу загружать сообщения из своей базы данных, но как я могу указать это в response-native-gifted-chat, что получатель отправил сообщение сообщение не отправитель, т.е. до загрузки приложения сообщения загружаются в this.state.messages, по документации так и должно быть
{
_id: 1,
text: 'My message',
createdAt: new Date(Date.UTC(2016, 5, 11, 17, 20, 0)),
user: {
_id: 2,
name: 'React Native',
avatar: 'https://facebook.github.io/react/img/logo_og.png',
},
image: 'https://facebook.github.io/react/img/logo_og.png',
// Any additional custom parameters are passed through
}
В документации указано только, как указать сообщение отправителя, но не получателя, пожалуйста, как можно показать сообщение получателя, т.е.
{
_id: 2,
text: 'Receiver's message',
createdAt: new Date(Date.UTC(2016, 6, 11, 17, 20, 0)),
user: {
_id: 2,
name: 'Receiver',
avatar: 'https://facebook.github.io/react/img/logo_o3.png',
},
image: 'https://facebook.github.io/react/img/logo_o3.png',
}
В https://github.com/FaridSafi/react-native-gifted-chat/blob/master/example/App.js есть пример, вы можете увидеть там функцию onReceive ().
onReceive(text) {
this.setState((previousState) => {
return {
messages: GiftedChat.append(previousState.messages, {
_id: Math.round(Math.random() * 1000000),
text: text,
createdAt: new Date(),
user: {
_id: 2,
name: 'React Native',
// avatar: 'https://facebook.github.io/react/img/logo_og.png',
},
}),
};
});
}
Вы можете запустить эту функцию таким образом при получении сообщения. (При изменении состояния)
Вы можете указать активного пользователя, добавив свойство в компонент GiftedChat:
<GiftedChat
messages = {this.state.messages}
onSend = {messages => this.onSend(messages)}
user = {{
_id: 1,
}}
/>
Ключ «_id» в «пользовательском» ключе объекта сообщения должен отличаться друг от друга.