0Pricing
React Academy · レッスン

React Native Core ComponentsとWeb DOMの比較

View、Text、Image、ScrollViewを対応するDOM要素と比較し、bridge modelを理解します。

「React Native Core ComponentsとWeb DOMの比較」はCoddyKit上の無料React Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはReact Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 React Academyコースには全4レッスンが含まれています。

React NativeにHTMLがない理由

React NativeはブラウザーのDOMではなく、iOSとAndroidのネイティブUIコンポーネントに描画します。<div>、<p>、<img>は存在せず、各プラットフォームが独自のネイティブプリミティブを持ちます。

View — div相当

ViewはReact Nativeで最も基本的なレイアウトコンテナです。iOSではUIViewに、Androidではandroid.view.Viewに対応します。直接テキストを格納できない<div>と考えてください。

import { View, StyleSheet } from 'react-native';

function Card() {
  return (
    <View style={styles.card}>
      {/* children go here */}
    </View>
  );
}

const styles = StyleSheet.create({ card: { padding: 16, borderRadius: 8 } });

Text — p/span相当

Textは、画面に表示するすべてのテキストに必要です。Webとは異なり、文字列をViewの中に直接置くことはできません。<Text>でラップする必要があります。

import { View, Text } from 'react-native';

function Greeting() {
  return (
    <View>
      <Text style={{ fontSize: 24, fontWeight: 'bold' }}>Hello!</Text>
      <Text>Welcome to React Native.</Text>
    </View>
  );
}

Image — img相当

Imageは画像を表示します。ローカルアセットにはrequire()を指定したsource propsを使用し、ネットワーク画像には{ uri: '...' }オブジェクトを使用します。

import { Image } from 'react-native';

// Local asset:
<Image source={require('./assets/logo.png')} style={{ width: 100, height: 100 }} />

// Network image (must provide dimensions):
<Image source={{ uri: 'https://example.com/photo.jpg' }} style={{ width: 200, height: 150 }} />

ScrollView — overflow:scroll相当

ScrollViewはスクロール可能なコンテナです。Webとは異なり、明示的に使用する必要があります。Viewはスクロールしません。長いリストにはFlatListを優先してください。

import { ScrollView, Text } from 'react-native';

function Article({ paragraphs }) {
  return (
    <ScrollView>
      {paragraphs.map((p, i) => <Text key={i}>{p}</Text>)}
    </ScrollView>
  );
}

FlatList — 仮想化リスト

FlatListは表示されている項目だけを描画し、画面外の項目を再利用します。大量のデータを扱う際のパフォーマンスに不可欠です。

import { FlatList, Text, View } from 'react-native';

function UserList({ users }) {
  return (
    <FlatList
      data={users}
      keyExtractor={u => u.id}
      renderItem={({ item }) => <Text>{item.name}</Text>}
    />
  );
}

TouchableOpacity — button相当

TouchableOpacity(新しいRNではPressable)は、任意のビューにタッチフィードバックを追加します。onPress propsでタップを処理します。

import { TouchableOpacity, Text } from 'react-native';

function Button({ onPress, title }) {
  return (
    <TouchableOpacity onPress={onPress} activeOpacity={0.7}>
      <Text>{title}</Text>
    </TouchableOpacity>
  );
}

TextInput — input相当

TextInputは制御された入力フィールドです。value、onChangeText、placeholder、キーボードの種類に対応しています。

import { TextInput, useState } from 'react-native';

function SearchBar() {
  const [query, setQuery] = useState('');
  return (
    <TextInput
      value={query}
      onChangeText={setQuery}
      placeholder="Search..."
      keyboardType="default"
    />
  );
}

ActivityIndicator — ローディングスピナー

ActivityIndicatorはネイティブのローディングスピナーです。iOSでは円形のスピナー、Androidではマテリアルデザインの円形プログレスインジケーターとして表示されます。

import { ActivityIndicator, View } from 'react-native';

<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
  <ActivityIndicator size="large" color="#4f46e5" />
</View>

SafeAreaView

SafeAreaViewは、iOSとAndroidでノッチ、ステータスバー、ホームインジケーターのための余白を自動的に追加します。

import { SafeAreaView } from 'react-native-safe-area-context';

export default function App() {
  return (
    <SafeAreaView style={{ flex: 1 }}>
      <MyScreen />
    </SafeAreaView>
  );
}

Modal

Modalはアプリの上にオーバーレイを表示します。visible propsで表示するかどうかを制御します。

import { Modal, View, Text } from 'react-native';

<Modal visible={showModal} animationType="slide" transparent={true}>
  <View style={styles.overlay}>
    <View style={styles.dialog}>
      <Text>Are you sure?</Text>
    </View>
  </View>
</Modal>

クイックチェック

画面にテキストを表示するには、どのReact Nativeコンポーネントを使用する必要がありますか?

まとめ

React Nativeでは、Webの概念をネイティブコンポーネントに対応付けます。View(div)、Text(p)、Image(img)、ScrollView、FlatList(仮想化リスト)、TextInput(input)、TouchableOpacity(button)があります。ルートレイアウトには必ずSafeAreaViewを使用してください。

よくある質問

「React Native Core ComponentsとWeb DOMの比較」レッスンは無料ですか?

はい。「React Native Core ComponentsとWeb DOMの比較」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、React Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 React Academyコースには全4レッスンが含まれています。

「React Native Core ComponentsとWeb DOMの比較」で何を学びますか?

View、Text、Image、ScrollViewを対応するDOM要素と比較し、bridge modelを理解します。 ブラウザで直接実行するハンズオンコードでReact Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

React Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのReact Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「React Native Core ComponentsとWeb DOMの比較」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このReact Academyレッスンでコードを書いて実行できますか?

はい。すべてのReact Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. React Native Core ComponentsとWeb DOMの比較
  2. StyleSheet APIとFlexboxによるスタイリング
  3. Expo Routerによるナビゲーション
  4. Device APIへのアクセス:Camera、Location、Push Notifications
← React Academyに戻る