Cordova アプリでチャット機能を実装するときに便利な React コンポーネントを見つけたので、備忘録としてまとめ。
タイトルにもある通り、「react-chat-elements」というコンポーネントです。
CSS を使えば、自前で実装することもできるのですが、既にコンポーネントがあるなら使おう!と思って触ってみました。
GitHub のページがこちら。
GitHub – Detaysoft/react-chat-elements: Reactjs chat elements chat UI, react chat components
https://github.com/Detaysoft/react-chat-elements
まず、下記のコマンドでライブラリをインストールします。
npm install react-chat-elements --save
インストールが完了したら、お好みのコンポーネントを使って実装するだけです。
私は、MessageList
を使用しました。
チャットのデータを配列で一気に渡せるのが決め手でした。
サンプルコードは下記のとおりです。
import { MessageList } from 'react-chat-elements'; import 'react-chat-elements/dist/main.css'; const messages = [ { position: 'left', type: 'text', text: 'サンプルチャット', date: new Date('2020-03-12 13:00:00'), }, { position: 'right', type: 'text', text: 'サンプルチャット2', date: new Date('2020-03-12 14:00:00'), }, { position: 'left', type: 'photo', data: { uri: 'img/human.svg', status: { click: false, loading: 0, } }, date: new Date('2020-03-12 15:00:00'), } ]; class ChatPage extends Component { constructor(props) { super(props); this.state = { } } render() { return ( <MessageList toBottomHeight={'100%'} lockable={true} dataSource={messages} /> ); } } export default ChatPage;
変数 messages
に、サンプルのチャットデータを格納したので、こちらを 42行目の dataSource
に渡しています。
messages に格納されている内容によって、吹き出しの位置を自動で変更してくれたり(position
)、表示するデータ形式を メッセージや写真に変更してくれる(type
)のも便利です。
CSS を使って自分で実装すると、このあたりが面倒だったりしますしね。
ただ、date に格納されている日付が英語表記になってしまっているので、こちらは今後修正したいと考えています。
実装としては以上です。
以上、React でチャット UI を簡単に実装できるコンポーネント「react-chat-elements」のご紹介でした。
ご参考になれば幸いです。