簡體   English   中英

天才聊天缺少消息的“_id” - React Native

[英]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:姓名:頭像:}

  1. 選項 1:您從 sendbird 獲取所有相應的字段值,並使用預期的屬性名稱更新中間數組,然后更新 this.state.messages 選項 2:Onsend 函數應在 sendbird id 中插入以下列標題的值:文本:createdAt:用戶:{_id:名稱:頭像:}

因此,當您從 sendbird 檢索消息時,您將獲得與giftedchat 格式所期望的完全相同的字段。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM