Ошибка создания блока примера чата в прямом эфире. Messagelist = messages.entries не является функцией - PullRequest
0 голосов
/ 27 мая 2020

Я пытаюсь следовать простому руководству по прямому эфиру в React.

Используя код из учебного пособия, например:

  return (
    <React.Fragment>
      <h2>Chat</h2>
      {chatClient && channel.id ?
      <Chat client={chatClient} theme={'livestream'}>
        <Channel channel={channel} Message={MessageLivestream}>
          <Window hideOnThread>
            <ChannelHeader live />
              {!chatIsEmpty ? <MessageList /> : 'Be the first!'}
            <MessageInput Input={MessageInputSmall} focus />
          </Window>
          <Thread fullWidth />
        </Channel>
      </Chat>  : '...Loading'}
    </React.Fragment>
  );

Я использую функциональный компонент для чата:

const chatClient = new StreamChat(process.env.REACT_APP_STREAM_LIVE_CHAT_ID);

И я инициализирую так:

  async function initChat () {
    await chatClient.setUser(
      {
        id: 'brendan',
        name: 'Brendan',
      },
      chatClient.devToken('brendan')
    );

    const channelInst = await chatClient.channel('livestream', process.env.REACT_APP_STREAM_CHANNEL_ID, {
      name: process.env.REACT_APP_STREAM_CHANNEL_NAME,
      members: ['brendan']
    });

    setChatIsEmpty(_.isEmpty((await channelInst.watch()).messages))

    setChannel(channelInst)
  }

Ошибка получения:

TypeError: messages.entries не является функцией

MessageList.insertDates
src / components / MessageList / MessageList. js: 332

Full error image

Если я закомментирую компонент messagelist, он отобразит успешно, просто без сообщений, очевидно, и я могу отправлять сообщения через ввод.

...