Необходимо реализовать один из компонентов чата — историю сообщений:
Список сообщений передаваемый в компонент представляет собой массив объектов, каждый из которых представляет собой сообщение, которое необходимо отразить в истории. Сообщение имеет следующие свойства:
id
— уникальный идентификатор сообщения, строка;from
— автор сообщения, объект;type
— тип сообщения, строка, варианты значений:response
,message
,typing
;time
— время публикации сообщения, строка;text
— текст сообщения, строка, может отсутствовать.
Для отображения списка создайте компонент MessageHistory
, который принимает следующие атрибуты:
list
— список сообщений, массив объектов, по умолчанию пустой массив.
Если список сообщений пуст, то компонент не должен иметь какого-либо представления в DOM.
Компонент должен создавать на основе списка предложений следующий HTML-код:
<ul>
<li class="clearfix">
<div class="message-data align-right">
<span class="message-data-time">10:10</span>
<span class="message-data-name">Ольга</span>
<i class="fa fa-circle me"></i>
</div>
<div class="message other-message float-right">
Привет, Виктор. Как дела? Как идет работа над проектом?
</div>
</li>
<li>
<div class="message-data">
<span class="message-data-name"><i class="fa fa-circle online"></i> Виктор</span>
<span class="message-data-time">10:12</span>
</div>
<div class="message my-message">
Привет. Давай сегодня созвонимся. Проект практически готов, и у меня есть что показать.
</div>
</li>
<!-- … и так далее -->
</ul>
Где каждый тег <li>
— сообщение из массива. Для отображения сообщений в чате необходимо использовать следующие компоненты:
Message
— если тип сообщения равенmessage
,Response
— если тип сообщения равенresponse
,Typing
— если тип сообщения равенtyping
.
Все три компонента принимают следующие аргументы:
from
— автор сообщения, объект,message
— сообщение, объект.
const messages = [{
id: 'chat-5-1090',
from: { name: 'Ольга' },
type: 'response',
time: '10:10',
text: 'Привет, Виктор. Как дела? Как идет работа над проектом?'
}];
const chat = (
<div className="chat">
<div className="chat-history">
<MessageHistory list={messages} />
</div>
</div>
);
ReactDOM.render(chat, document.getElementById('root'));
Необходимо реализовать компонет MessageHistory
.
Компонент необходимо реализовать в файле ./js/MessageHistory.js
. Файл уже подключен к документу, поэтому другие файлы изменять не требуется.
Реализуйте компонент во вкладке JS(Babel). Перед началом работы сделайте форк этого пена: