ダウンロード サンプルファイル (77.8 KB)
コンポーネントとprops(2)
コンポーネントを再利用する
さて、前項で「どうせ自作のコンポーネントは、元をたどれば基底のコンポーネントの組み合わせでしかない」という話をしました。それなら、コンポーネントを自作せず、リスト7のように基底のコンポーネントを並べたほうが楽なのでしょうか。
そういうケースもあるかもしれませんが、コンポーネントに分けると、「再利用することができる」というメリットが発生します。
メリットの実例として、まずはWelcomeコンポーネントを再利用してみましょう。Welcomeコンポーネントを増やします(リスト8)。
import React from 'react';
import { View, Text, StyleSheet } from 'react-native';
export default function App() {
return (
<View style={styles.container}>
<Welcome name="Sara" />
<Welcome name="Cahal" />
<Welcome name="Edite" />
</View>
);
}
function Welcome(props) {
return <Text>Hello, {props.name}</Text>;
}
const styles = StyleSheet.create({
// 省略
これを実行すると、図2のようになります。
Welcomeメッセージが3つ現れましたね。同じ表示になる画面部品を作って、それを使い回せる、というのは、似た部品が多く現れるアプリ開発においては、とてもありがたい特徴です。
実装を隠蔽できる
次に、スタイルの隠蔽についても目を向けてみます。これについてはコンポーネントを別のファイルとして管理したほうがうまみが出やすいので、App.jsと同じ階層にWelcome.jsを作ってみましょう(リスト9)。
import React from 'react';
import { Text } from 'react-native';
export function Welcome(props) {
return <Text>Hello, {props.name}</Text>;
}
すると、App.js側ではWelcomeコンポーネントをインポートして使うことになります(リスト10)。
import React from 'react';
import { View, StyleSheet } from 'react-native';
import { Welcome } from './Welcome';
export default function App() {
return (
<View style={styles.container}>
<Welcome name="Sara" />
<Welcome name="Cahal" />
<Welcome name="Edite" />
</View>
);
}
const styles = StyleSheet.create({
// (省略)
この時点で、App.jsはWelcomeコンポーネントがどんな実装になっているのかについて、関心を持たなくなりました。関心があるのは、次の2点だけです。
- どんな名前のコンポーネントなのか
- どんなpropsを持っているのか
この先は、Welcomeコンポーネントのファイル内で、独自にスタイルを付けてフォントを変えたり、文面を変えたりしても、App.jsには影響がありません(リスト11)。
import React from 'react';
import { Text, StyleSheet, Platform } from 'react-native';
export function Welcome(props) {
return (
<Text style={styles.text}>
Hello, {props.name}!!
</Text>
);
}
const styles = StyleSheet.create({
text: {
fontFamily: Platform.select({
ios: "Hiragino Mincho ProN",
android: "serif",
}),
fontSize: 48,
}
});
App.jsには手を入れず、Welcome.jsだけを編集して、再度実行してみると、図3の表示になります。
UIを適切に分割してコンポーネント化しながら定義していくことで、ある部分の修正で他の部分に影響が出ないようにするのが、コンポーネント化の醍醐味の1つです。名前を付け、propsを定義して切り出せそうな部分を見つけたら、積極的にコンポーネント化していきましょう。
まとめ
今回は静的に定義できる範囲でUIを定義する手法を学びました。次回は、コンポーネントに状態を持たせて、UIを更新する手法について解説します。
この記事は参考になりましたか?
既に会員の方はを行ってください。
- 基礎からはじめるReact Native入門連載記事一覧
- この記事の著者
-
WINGSプロジェクト 中川 幸哉(ナカガワ ユキヤ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
