as

Settings
Sign out
Notifications
Alexa
Amazonアプリストア
AWS
ドキュメント
Support
Contact Us
My Cases
開発
設計と開発
公開
リファレンス
サポート

簡単なリファクタリング

簡単なリファクタリング

作業を始める前に、インポートを最適化して簡単なリファクタリングを行いましょう。パート1では、コンポーネントと画面が必要になったときに、それぞれ別の行にインポートしました。アプリの規模が大きくなると、importステートメントが増えてコードが読みにくくなる可能性があります。

importステートメントの数を減らすには、各フォルダにindex.tsファイルを作成し、各フォルダのコンポーネント/画面を一覧表示します。各コンポーネント/画面は名前付きエクスポートとして表示され、1行にインポートできます。これは、「react-native」からViewやTextなどのコンポーネントをインポートするために使用するのと同じ構文です(例:import { View, Text } from 'react-native')。

Componentsフォルダにインデックスファイルを追加

まず、componentsフォルダーのindex.tsを作成します。

  • componentsフォルダに移動し、index.tsという名前の新しいファイルを作成します。これはJSXが含まれていない単純なTypeScriptファイルであるため、拡張子は.tsを使用します。
src/
├── components/
   ├── Header.tsx
   ├── VideoCard.tsx
|   └── index.ts
└── App.tsx
  • index.tsを開き、componentsフォルダのすべてのコンポーネントにimportステートメントを追加します。
  • 各コンポーネントを一覧表示するexportステートメントを追加します。

index.tsファイルは次のようになります。

クリップボードにコピーしました。

import Header from './Header';
import VideoCard from './VideoCard';

export {
    Header,
    VideoCard
}

コンポーネントのインポート

次に、新しいインポートアプローチを使用するために、LandingScreen.tsxを更新する必要があります。

  • LandingScreen.tsxで、ヘッダーとビデオカードのインポートステートメントを削除します。
  • index.tsからコンポーネントを追加するimportステートメントを1つ追加します。componentsフォルダからのインポートを指定するだけで、index.tsファイルがこのフォルダで読み込まれて名前付きエクスポート(Header、VideoCard)が検索されます。

LandingScreen.tsxのimportステートメントは次のようになります。

クリップボードにコピーしました。

import React, {useState, useEffect} from 'react';
import {FlatList, StyleSheet, View} from 'react-native';
import {Header, VideoCard} from '../components';

Screensフォルダにインデックスファイルを追加

screensフォルダについても同じ手順を繰り返します。

  • screensフォルダにindex.tsという名前のファイルを作成します。
src/
├── screens/
│   ├── LandingScreen.tsx
|   └── index.ts
└── App.tsx
  • index.tsを開き、screensフォルダのすべてのコンポーネントにimportステートメントを追加します。
  • 各コンポーネントを一覧表示するexportステートメントを追加します。

index.tsファイルは次のようになります。

クリップボードにコピーしました。

import LandingScreen from './LandingScreen';

export {
    LandingScreen,
}

画面のインポート

次に、App.tsxのimportステートメントを更新する必要があります。

  • App.tsxを開きます。
  • LandingScreenのimportステートメントを削除します。
  • screensフォルダからLandingScreen画面を追加するimportステートメントを1つ追加します。

App.tsxのimportステートメントは次のようになります。

クリップボードにコピーしました。

import * as React from 'react';
import {LandingScreen} from './screens';
  • アプリを再読み込みして、すべてが同じようにレンダリングされることを確認します。

このリファクタリングは、それほど大掛かりに見えないかもしれませんが、多くのコンポーネントや画面で構成される複雑なアプリをビルドする際に、各ファイルの先頭のimportステートメント数を減らすことができます。