【ReactNative】react-native-gifted-chatライブラリを使ってチャットアプリを実装してみた
本記事の内容
  • チャット機能を使ったアプリの作る方法
  • react-native-gifted-chatライブラリ

について解説します。

この記事を読むことで、以下のような「メッセージを送信すると褒め言葉を返してくれるアプリ」を作ることができます。

1. 概要

今回は、react-native-gifted-chatライブラリを使ったチャットアプリを紹介していきます。また、本記事は、導入レベルの記事をとなっていますので、他のデバイスとのチャットはできませんので、ご了承ください。

以下にGitHubのリンクを貼っておきます。
react-native-gifted-chat

2. react-native-gifted-chatライブラリの実装

2.1 ライブラリのインストール

まず、ターミナルで以下のコマンドを実行してライブラリをインストールします。

3. サンプルコード

3.1 サンプルコードについて解説

インポート

react-native-gifted-chat’ライブラリからGiftedChatコンポーネントをインポートします。

<GiftedChat>コンポーネント

GiftedChatコンポーネントは、以下のプロパティを使うことでチャット機能をカスタマイズすることができます。(一部紹介)

<GiftedChat>コンポーネントのプロパティ
messages 表示するメッセージ
placeholder テキストボックスが空の時に表示される文字列
デフォルトは’Type a message…’と表示。
user メッセージを送信するユーザー情報。{_id, name, avatar}を設定する。
onSend メッセージ送信時のコールバック処理。
alwaysShowSend trueの時、常に送信ボタンを表示。
label 送信ボタンも文字列。デフォルトは’Send’と表示。
messagesContainerStyle チャットのメイン画面のスタイル。
textInputStyle テキストボックスのスタイル
containerStyle テキストボックス周辺のスタイル
textStyle 送信ボタンのスタイル

各スタイルの反映箇所

もっと細かくカスタマイズしたいと言う方は、GitHubを参考にしてみてください。
react-native-gifted-chat

返信処理reply()の編集

reply()
GitHubのコードから _id: の値を変えています。
GitHubには _id: 1, と書かれているが、 _id: 1 で実装すると以下のようなWarringが表示される。
Warning: Encountered two children with the same key, %s. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — the behavior is unsupported and could change in a future version.%s, 1,


このWarrnigについて調べたとこと、key(_id)が複数個ダブった時に出るwarrningみたいです。
なので、今回は、 _id が被らないようにランダムな値がを設定されるように実装しました。


これらのメソッドを使って、値が被らないようにランダムな値を設定します。

Math.random() 0–1(0以上、1未満)の範囲で浮動小数点の擬似乱数を返します。
console.log(Math.random())で確認すると”0.44204934185626577″みたいな値が返ってきます。
Math.round() 引数として与えた数を四捨五入して、もっとも近似の整数を返します。

Math.random()メソッドによって取得したランダムな値をMath.roundメソッドを使って、整数にした値を_idに設定する仕組みです。

奇跡的に値が被ることも考慮されるので、以下のようにメッセージを送信する毎に_idを1ずつ加算していく方法も良いかも。

他の改善策を知っていると言う方は、是非とも共有お願いします。

まとめ

今回は、チャットアプリの実装方法について紹介しました。このライブラリを実装するだけ一つのアプリとして完成しそうなほど、すばらしいライブラリですね(^^)