React Nativeで買い物リストアプリを作ってiOS/Androidで動作させた
やりたかったこと
React Nativeに入門するも、Hello Worldより先になかなか進まなかったので、小さな物でもいいのである程度使えるアプリを作ってみることにした。
お題としてTODOリストのような一般的な物を作ることにしたため、どう実装するかはさておいて、機能については悩みどころがなかったのはよかったと思う。
何を作ろう?どんな機能が必要だろう?から考えてしまうとなかなか進まないので、おきまりの物を作ろうと割り切った。
スクリーンショット
iOS
iOSに合わせてレイアウトした。
Android
上に若干余白があるが、本来はプラットフォーム別に調整できるところをサボっているだけ。
リポジトリ
この記事を書いた時点ではREADMEすら書いてないけど、React Nativeの環境ができていれば、 git clone
して cd
して npm i
の後に react-native run-ios
とかやれば動くはず。
主に使ったコンポーネント/API
- AsyncStorage
- アイテムを保存するために使用
- FlatList
- いわゆるリストビュー
- Text
- TextInput
- TouchableOpacity
- Buttonは使わなかった
- View
悩んだところ
コンポーネントの分割粒度
今回は作りきることが目的だったのでざっくり分けたが、ネイティブもReactも経験が少ないので筋のいい分け方が知りたい。
FlatListの扱いに悩んだ
アイテムが追加されても、FlatListをスクロールするまで新しいアイテムが再描画されなかった。
extraDataというpropを設定し、その値も合わせて更新することで再描画してくれるようになったが、extraDataに配列を渡しても変更を検出してくれないようなので、数値などの値にする必要があるようだ。今回は表示対象のアイテムを保持する配列の長さをextraDataとして使用した。
thisの扱い
必要に応じてbindを使って解決したが、bindを使わずにスマートにかけるのであればその方法を知りたい。
まとめ
- ある程度JavaScriptが書ければ簡単なアプリは作れる
- 小さい規模であれば、差異をほぼ気にせずにクロスプラットフォーム対応できた
- 検索して得られる情報も増えていきたので、エラーや予期しない挙動があってもなんとか解決できる状況になってきた
- 環境構築やシミュレーターでの動作確認に躓くと厳しそう。その場合はネイティブの知識が必要になりそうな気がする
個人的にはもうちょっとJavaScriptとその周辺エコシステムを学んだら、もうちょっと気分良くかけるかも。
初めてのJavaScript 第3版 ―ES2015以降の最新ウェブ開発
- 作者: Ethan Brown,武舎広幸,武舎るみ
- 出版社/メーカー: オライリージャパン
- 発売日: 2017/01/20
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る