BLOG

【React Native】Elementsを使ってみよう!

2020-05-18

React Native Elementsとは?


React Native ElementsはオープンソースのReact NativeのためのUIライブラリです。

近年人気が高まってきており、簡単にスタイルを作ることが出来るライブラリの一つです。

React Native Elementsはモバイルアプリ開発だけではなく、webアプリ開発でも使えます。

下記グラフはnpmでのReact Native Elementsをダウンロード数です。ユーザはまだ増えています(現象傾向にある箇所は年末休みの時期でした)。

※ソース:https://npmcharts.com/compare/react-native-elements?interval=7


React Native ElementsのComponentを使ってみよう!


■環境構築

React Native Elementsは下記コマンドでインストールできます。

npmを使う場合: npm install react-native-elements yarnを使う場合: yarn add react-native-elements

React Nativeの環境構築についてはこちらの記事を参考にしてください。Snackで使ってみましたが、アイコンがレンダーされていなかったです。そのため、expo cliなどのローカル環境はオススメです。

webアプリケーション開発で使いたい場合は他の設定が必要ですが、今回はモバイルを作成します。ウェブの設定はドキュメンテーションに記載があるので参考にしてください。


■実際に使ってみよう!

React Native Elementsは色々なComponentがあります。この記事ではHeaderとButtonを紹介します。ドキュメンテーションはこちらから確認できます。


Headerはアプリのバンナーとして一番上に表示するためのComponentです。ハンバーガーボタンなどのナビゲーションを入れるのが一般的な使い方です。

Buttonはボタンを表示するComponentですが、普通のReact NativeのButtonよりpropsが多いです。

下記コードと画像はHeaderとButtonを2つ表示したものです。

import React from 'react';
import { Header, Button } from 'react-native-elements';

export default function App() {
  return (
    <>
      <Header
        leftComponent={{ icon: 'menu', color: '#fff' }}
        centerComponent={{ text: 'MY TITLE', style: { color: '#fff' } }}
        rightComponent={{ icon: 'home', color: '#fff' }}
      />
      <Button title="Button1" />
      <Button title="Button2" />
    </>
  );
};

■ヘッダーについて

HeaderのleftComponent、centerComponent、rightComponentは左、中央、右の部分のことです。それぞれtextかiconかReact 要素/Componentです。具体的には下記の形です。

※ソース: ドキュメンテーション


ThemeProvider


■色変更

React Native ElementsのComponentは全て同じテーマを使っています。

このテーマはデフォルトの値がありますが、ThemeProviderというComponentでデフォルトを上書きすることができます。

例えば、下記のコードのようにcolorsのprimaryを指定したらHeaderとButtonの色を変えることができます。

import React from 'react';
import { ThemeProvider, Header, Button } from 'react-native-elements';

const theme = {
  colors: {
    primary: '#9fc0d1',
  },
};

export default function App() {
  return (
    <ThemeProvider theme={theme}>
      <Header
        leftComponent={{ icon: 'menu', color: '#fff' }}
        centerComponent={{ text: 'MY TITLE', style: { color: '#fff' } }}
        rightComponent={{ icon: 'home', color: '#fff' }}
      />
      <Button title="Button1" />
      <Button title="Button2" />
    </ThemeProvider>
  );
};

■ボタン変更

テーマの色だけではなく、他も変えてみます。まずはテーマにボタンのpropsを追加しましょう。

const theme = {
  Button: {
    containerStyle: {
      margin: 10,
    },
    raised: true,
  },
  colors: {
    primary: '#9fc0d1',
  },
};

themeオブジェクトのButtonのプロパティはButtonのComponentのpropsになります。この例の場合は下記と同じです。

<Button title="Button1" containerStyle={{ margin: 10 }} raised />

React Nativeは同じprop値を繰り返して使いたい時は、多くはカスタムComponentを作りますが、React Native Elementsはthemeオブジェクトを作るだけで実現出来ます。

raisedのpropsはボタンが浮き出たようになります。下の画像のようになります。


containerStyle


全てのReact Native ElementsのComponentはコンテナがあります。このコンテナはReact Nativeのです。こののスタイルをカスタマイズしたい時には上の例のようにcontainerStyleを代入します。


印象と結論


UIとデザインを作る時、ゼロから作るはかなり時間がかかるのでライブラリを使うことが多いです。React Native ElementsのThemeProviderは使いやすいので、今後大きなプロジェクトでも使ってみたいと思います。他のライブラリもあるので興味があれば見てください。

NativeBase

UI Kitten

React Native Paper

参考


React Native Elements ホームページ

npmcharts

(記事) 10 Awesome React Native UI Component Libraries You Should Know

(記事) 15 React Native Component Libraries You Should Know in 2020



これからエンジニア転職を考えている方へ

ロックシステムではエンジニアスクール「ロックシステムアカデミー」を運営しています。
プログラミングの基礎知識から本格的な開発ノウハウまでしっかり教えます!

教室は生のIT企業!
◆ 実際の開発プロジェクトを通して経験できる!
◆ 現役エンジニアが直接指導!
◆ 20代の転職成功率100%!


是非公式ホームページもご覧ください
未経験からITエンジニアをめざすならロックシステムアカデミー
大阪市福島駅すぐの現役SE直接指導のプログラミングスクール開校
https://rocksystem.co.jp/academy/

株式会社ロックシステム

「ブラック企業をやっつけろ!!」を企業理念にエンジニアが働きやすい環境をつきつめる大阪のシステム開発会社。2014年会社設立以来、残業時間ほぼゼロを達成し、高い従業員還元率でエンジニアファーストな会社としてIT業界に蔓延るブラックなイメージをホワイトに変えられる起爆剤となるべく日々活動中!絶賛エンジニア募集中。