浜松のWEBシステム開発・スマートフォンアプリ開発・RTK-GNSS関連の開発はお任せください
株式会社シーポイントラボ
TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:静岡県浜松市中区富塚町1933-1 佐鳴湖パークタウンサウス2F

【React Native】チャット画面を簡単に作成できるライブラリ「react-native-gifted-chat」

これは本当に便利だったので全力でご紹介!
React Native でチャットページを簡単に作成できるライブラリ「react-native-gifted-chat」です。

GitHub のページはこちらから。

GitHub – FaridSafi/react-native-gifted-chat: 💬 The most complete chat UI for React Native
https://github.com/FaridSafi/react-native-gifted-chat

 

まず、ライブラリを下記のコマンドでインストールします。

npm install react-native-gifted-chat --save

上記が完了したら、プロジェクトの任意の場所でインポートして使用します。

import { GiftedChat } from 'react-native-gifted-chat'

チャットメッセージの一覧は、statemessages で管理しています。
ちなみに初期値は [] です。
で、送信ボタンが押された時の処理は下記のとおりです。

sendMessage(message) {
  let messages = this.state.messages;
  messages = message.concat(messages);
  this.setState({ messages: messages });
}

最後に、renderreturn には下記を追加します。

<GiftedChat
  messages={this.state.messages}
  onSend={messages => this.sendMessage(messages)}
  user={{
    _id: 1,
  }} />

最低限追加しなければいけないのは以上です!
こちらを追加して実行すると、Facebook の Messenger や Twitter の DM によく似た UI のチャット画面を実装することができます!

 

が、個人的には日付を日本語表記にしたいのと、入力欄や送信ボタンの見た目を変更したかったので、最終的に下記のようになりました。

import 'dayjs/locale/ja';
import { StyleSheet } from 'react-native';
const styles = StyleSheet.create({
  sendArea: {
    backgroundColor: 'rgba(240, 131, 0, 0.2)',
  },
  sendInput: {
    borderWidth: 0.5,
    borderColor: 'gray',
    borderRadius: 15,
    marginRight: 10,
    padding: 10,
    backgroundColor: '#FFF',
  },
  sendButton: {
    backgroundColor: '#F08300',
    color: '#FFF',
    padding: 10,
    borderRadius: 10,
    margin: 5,
    marginLeft: 0,
    height: 34,
  }
});
sendMessage(message) {
  let messages = this.state.messages;
  messages = messages.concat(message);
  this.setState({ messages: messages });
}
renderSendButton(props) {
  return <Send {...props}><Text style={styles.sendButton}>送信</Text></Send>
}
<GiftedChat
  messages={this.state.messages}
  onSend={this.sendMessage}
  user={{ _id: 1 }}
  locale='ja'
  placeholder='メッセージを入力してください'
  renderUsernameOnMessage={true}
  textInputProps={{ selectionColor: "#F08300" }}
  renderSend={this.renderSendButton}
  containerStyle={styles.sendArea}
  textInputStyle={styles.sendInput} />

入力エリアの背景色を薄いオレンジに変更し、メッセージ入力欄には枠線を追加し角を丸め、さらに送信ボタンをオレンジ色にして、テキストを「送信」に変更しています。
また、import 'dayjs/locale/ja'; を追加し、locale='ja' を指定することで、日付の表記を日本語にしています。

あとは、自分の吹き出しの色を青からオレンジに変更したいのですが…こちらは吹き出しコンポーネントそのものを指定しなければいけないようなので、ちょっとどうしようかな…と迷っています。
背景色を変えたいだけなのですが…。
こちらはこれから調整していきたいと思います。

 

以上、React Native でチャット画面を簡単に実装できるライブラリ「react-native-gifted-chat」のご紹介でした。
基本的なチャット画面を作るのは本当に簡単だったので超お勧めです。
ご参考になれば幸いです。

  • この記事いいね! (0)