Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Handling Events in React Native

2025年09月30日に「Dev.to」が公開したITニュース「Handling Events in React Native」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

React Nativeでアプリを開発する際、ユーザーの操作(タップなど)にアプリを反応させる「イベント処理」は必須。この記事は、React Nativeにおけるイベント処理の基本的な概念から実装方法までを、システムエンジニアを目指す初心者向けにわかりやすく解説している。

出典: Handling Events in React Native | Dev.to公開日:

ITニュース解説

React Nativeでアプリケーションを開発する際、ユーザーが画面をタッチしたり、テキストを入力したりといった操作を、アプリがどのように検知し、それに応じてどのような動作をするかを制御する仕組みが「イベントハンドリング」だ。これは、ユーザーとアプリが「対話」するための非常に重要な部分となる。システムエンジニアを目指すなら、このイベントハンドリングの基本をしっかりと理解しておくことが、インタラクティブなアプリケーションを構築する上で欠かせない。

まず、イベントとは何かという点から説明しよう。イベントとは、特定のコンポーネントに対して発生する出来事のことだ。例えば、ボタンをタップした時や、画面をスクロールした時、テキスト入力欄に文字を入力した時など、ユーザーが行う様々な操作がイベントとして認識される。React Nativeでは、これらのイベントが発生した際に、あらかじめ定義しておいた特定の関数を実行するよう設定できる。この特定の関数を「イベントハンドラー」と呼ぶ。

React Nativeのコンポーネントには、あらかじめ様々な種類のイベントに対応するプロパティが用意されている。例えば、最もよく使われるイベントの一つにonPressがある。これは、ButtonTouchableHighlightTouchableOpacityといったタップ可能なコンポーネントが持つプロパティで、ユーザーがそのコンポーネントをタップした際に実行される関数を指定する。例えば、<Button title="押してね" onPress={ここに実行したい関数を指定} />のように記述する。

イベントハンドラーの記述方法だが、これはJavaScriptの関数として定義する。通常、関数の定義はコンポーネントの内部で行うことが多い。例えば、const handlePress = () => { console.log('ボタンが押されました!'); };のようにアロー関数を使って定義し、これをonPress={handlePress}のように指定する。こうすることで、ボタンが押されるたびに、handlePress関数が実行され、コンソールにメッセージが表示される。

イベントハンドラーには、イベントが発生した際に関する様々な情報が含まれた「イベントオブジェクト」が自動的に引数として渡される。このイベントオブジェクトは、慣習的にeeventという名前で受け取ることが多い。例えば、const handlePress = (e) => { console.log(e.target); };のように定義すると、イベントが発生した要素に関する情報などを参照できる。ただし、onPressなどの一部のイベントでは、このイベントオブジェクトが直接的に役立つことは少ないかもしれない。一方、テキスト入力などでは、このイベントオブジェクトが非常に重要になる。

イベントハンドラーに独自の引数を渡したい場合も出てくるだろう。例えば、複数のボタンがあり、どのボタンが押されたかを識別したいようなケースだ。この場合、onPress={handlePress(引数)}のように直接関数を呼び出す形にすると、コンポーネントが描画されるたびにhandlePress関数が即座に実行されてしまうため、意図した動作にならない。正しく引数を渡すには、イベントが発生した時に初めて関数が実行されるように、アロー関数を使ってラップするのが一般的な方法だ。例えば、onPress={() => handlePress('ボタンA')}のように記述する。こうすることで、ボタンが押された時だけhandlePress関数が引数「ボタンA」と共に実行される。

イベントハンドリングは、アプリケーションの状態(state)と密接に連携することがほとんどだ。React Nativeの関数コンポーネントでは、useStateというフックを使って状態を管理する。例えば、ボタンを押すたびに画面上のテキストを変更したい場合、const [count, setCount] = useState(0);のように状態変数countを定義する。そして、イベントハンドラー内でsetCount(prevCount => prevCount + 1);のようにsetCount関数を呼び出してcountの値を更新する。countの値が更新されると、React Nativeは自動的にコンポーネントを再描画し、画面上の表示が変更される。これにより、ユーザーはボタンをタップするたびに、画面上の数値が増えていく様子を確認できるのだ。

別のイベントの例として、テキスト入力コンポーネントである<TextInput>を見てみよう。ユーザーが文字を入力するたびに発生するイベントはonChangeTextプロパティで処理する。onChangeTextのイベントハンドラーは、入力された最新のテキスト文字列を引数として受け取る。例えば、const [text, setText] = useState('');のように状態変数textを定義し、<TextInput onChangeText={newText => setText(newText)} />のように記述することで、ユーザーが入力するたびにtextの状態が更新され、その結果が画面に反映される。これにより、ユーザーは入力した文字をリアルタイムで確認できるわけだ。

このように、React Nativeにおけるイベントハンドリングは、ユーザーの操作に応じてアプリケーションのロジックを実行し、必要に応じて画面の状態を更新するための基本的な仕組みだ。onPressonChangeTextのようなイベントプロパティに適切なイベントハンドラー関数を割り当てることで、ユーザーフレンドリーでインタラクティブなアプリケーションを構築できる。イベントオブジェクトの利用、引数の渡し方、そしてuseStateフックを用いた状態管理との連携は、React Nativeでのイベント処理の核となる部分であり、これらの概念をしっかりと理解し実践することが、システムエンジニアとしてのスキルアップにつながるだろう。

関連コンテンツ