[英]Gifted chat missing '_id' for message - React Native
所以我正在為我的應用程序構建聊天功能部分。 我正在使用 sendbird sdk 以及用戶界面的天才聊天。
我的消息不會顯示,我不斷收到以下警告。 'GiftedChat:消息缺少_id
''
現在我已經三重檢查了我的 sendbird 是否配置正確,我登錄正確並且還創建了適當的頻道。 這些都在工作。
查看他們發布的我的消息日志,如圖所示。
{
messageType: 'user',
messageId: 2122453749,
etc ...
}
但是他們發布為messageId ,我是否必須更改其結構? 如果是這樣,我該怎么做,因為 sendbird 已經預先配置了它。 或者我可以在天才聊天中改變這個嗎?
請看一下我下面的代碼片段。
getChannelMetaData(channel) {
if (channel) {
const self = this;
const messagesQuery = channel.createPreviousMessageListQuery();
messagesQuery.load(50, true, (messages, error) => {
if (error) {
console.error(error);
}
this.setState({
messages,
});
});
}
}
onSend(messages = []) {
const handle = this;
const sb = SendBird.getInstance();
const { channel } = this.props.navigation.state.params;
this.setState(previousState => {
channel.sendUserMessage(messages[0].text, (response, error) => {
if (!error) {
handle.getChannelMetaData(channel);
}
});
console.log(this.state.messages);
return { messages: GiftedChat.append(previousState.messages, messages) };
});
}
<GiftedChat
messages={this.state.messages}
renderBubble={bubble}
loadEarlier
renderLoadEarlier={loadEarlier}
isAnimated
keyboardShouldPersistTaps="never"
onSend={messages => this.onSend(messages)}
user={{
_id: userID,
}}
showUserAvatar
/>
你應該使用這種格式:
{
_id: 1,
text: 'message',
createdAt: new Date(),
user: {
_id: 2,
name: 'nickname',
avatar: 'YourimageURL',
},
},
如果您不遵循他們指定的格式,則會引發此警告。 所以我們為此做了什么……我們只是從聊天消息的數組中自定義了我們的 JSON 對象,如下所示
let giftedChatMessages = chatMessages.map((chatMessage) => {
let gcm = {
_id: chatMessage.id,
text: chatMessage.get("text"),
createdAt: chatMessage.get("createdAt"),
user: {
_id: chatMessage.get("user").id,
name: chatMessage.get("user").get("name"),
avatar: chatMessage.get("user").get("avatarUrl")
}
};
return gcm;
});
messages={this.state.messages} 此處,{this.state.messages} 應具有以下結構
ID:
文本:
創建於:
用戶:{_id:姓名:頭像:}
因此,當您從 sendbird 檢索消息時,您將獲得與giftedchat 格式所期望的完全相同的字段。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.