React Native基礎

TextInputコンポーネント

TextInputコンポーネントとカスタマイズ

アプリでテキスト入力を受け付けるにはTextInputコンポーネントを使用します。valueプロパティで「現在の入力内容」を指定します。また、onChangeTextプロパティで入力されたテキストをstateに反映するイベントハンドラを指定します。
※TextInputはonChangeText以外にonChangeというプロパティがありますがイベントハンドラに渡される引数が異なるので注意してください。

<TextInput
style={styles.textInput}
value={this.state.name}
onChangeText={text => this.setState({name: text})}
/>

なお、TextInputはスタイルとしてborderWidthなどを指定しないと枠線が描画されないので注意してください。また、TextInput自体やそれを囲むViewでwidthを指定しないと「適切な長さ」の要素として描画されない点も注意が必要です。

TextInputで指定できるプロパティは以下のURLで説明されています。以下では利用頻度の高いと思われるプロパティに絞って説明を行います。
https://reactnative.dev/docs/textinput

keyboardTypeプロパティ

表示されるソフトウェアキーボードの種類を指定するにはkeyboardTypeプロパティを使います。Android・iOSどちらでも有効なもの、Androidのみ有効なもの、iOSのみ有効なものがあります。通常はどちらでも有効なものを使うことになります。

multilineプロパティ

複数行の入力が行えるようにするにはmultilineプロパティでtrueを指定します。
複数行入力のTextInputを適切に描画するには他にスタイルでtextAlignVertical(指定しないと縦方向が「中寄せ」になります)とheightを指定する必要があります。なお、TextInputにはnumberOfLinesというプロパティが指定できますがこのプロパティはAndroidでしか有効ではなく、指定した行数以上に入力するとそれに応じてコンポーネントが伸びていくことになります。

secureTextEntryプロパティ

パスワードを入力させる(入力内容を伏せる)にはsecureTextEntryプロパティをtrueにします。表示されるキーボードも適切なものになります。