多くのコンポーネントは作成時にパラメーターを渡すことでカスタマイズできます。この作成時パラメーターをprops
といいます。
例えば、基本的なReact NativeコンポーネントのひとつにImage
があります。画像を作成する際に
source
というプロパティーを使うことで何の画像を表示するかコントロールできます。
import React, { Component } from 'react';
import { AppRegistry, Image } from 'react-native';
class Bananas extends Component {
render() {
let pic = {
uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg'
};
return (
<Image source={pic} style={{width: 193, height: 110}}/>
);
}
}
AppRegistry.registerComponent('Bananas', () => Bananas);
JSXに変数pic
を埋め込むために{pic}
とかっこで囲むことに気をつけてください。JSX中のカッコ内にはどんなJavaScriptも書けます。
あなたは自身のコンポーネント内でprops
を使うこともできます。これによってアプリ内のいろいろな場所で使える
単一コンポーネントを作ることができ、それぞれの場所で少しだけ違ったプロパティをもっています。
あなたのrender
関数内でthis.props
を参照してください。以下が例です:
import React, { Component } from 'react';
import { AppRegistry, Text, View } from 'react-native';
class Greeting extends Component {
render() {
return (
<Text>Hello {this.props.name}!</Text>
);
}
}
class LotsOfGreetings extends Component {
render() {
return (
<View style={{alignItems: 'center'}}>
<Greeting name='Rexxar' />
<Greeting name='Jaina' />
<Greeting name='Valeera' />
</View>
);
}
}
AppRegistry.registerComponent('LotsOfGreetings', () => LotsOfGreetings);
プロパティーとして name
を使うことでGreeting
コンポーネントをカスタマイズしていて、あいさつ一つ一つにコンポーネントを再利用できます。この例ではJSX内でGreeting
コンポーネントをまるでビルトインのコンポーネントのように使っています。これを実現できるのがReactのクールなところです。 もし違ったUIセットが欲しくなったら、単に新しいものを作ってしまえばいいのです。
今回出た他の新規項目はView
コンポーネントです。View
は他のコンポーネントのコンテナとして有用で、スタイルとレイアウトをコントロールできます。
props
と基本的なText
、Image
、View
コンポーネントで、多種の静的画面を作成できます。時間でアプリを変更する方法について学ぶにはステートについて学ぶ必要があります。