概要
ここでは、Electron アプリの開発に React を導入する手順を示します。
React を導入すると、HTML をフラットな形でゴリゴリ記述していくのではなく、独自コンポーネント(例: <MyButton>
コンポーネント)を定義して、まとまりのある単位でコンテンツを構築していくことができます。
下記の手順により、Electron + TypeScript による開発環境が構築できていることを前提とします。
この記事の手順が完了すると、Electron + TypeScript + React による開発環境が整います。
一応 webpack などのバンドルツールを使わなくても開発を始められるので、Electron と React の開発環境としての相性はよさそうです。
React のセットアップ
React モジュールのインストール
React モジュールおよび、TypeScript 用の型定義ファイルをインストールします。
package.json
の内容は次のような感じになります。
JSX コードの有効化
TypeScript の設定ファイル (tsconfig.json
) を編集し、 .tsx
ファイル内に記述した JSX コードを認識できるようにします。
JSX コードはトランスパイルによって、通常の JavaScript コードに変換されます。
これだけで、Electron + TypeScript の開発環境上で React を使用できるようになります。
実装
React コンポーネント (Hello.tsx)
src/components
ディレクトリ以下に、独自の React コンポーネントを定義するための .tsx
ファイルを格納することにします。
ここでは、Hello
コンポーネントを作成します。
Hello
要素は、オプショナルな name
属性(プロパティ)を指定できるようにしてみます。
JSX 形式のコードを含むので、拡張子は .tsx
にすることに注意してください(.jsx
の TypeScript 版です)。
レンダラープロセス (renderer.tsx)
上記で定義した Hello
コンポーネントを表示するためのレンダラープロセスを実装します。
ここでも JSX コードを使うので、拡張子は .tsx
を使います。
このコードは、HTML 内の <div id="root">
要素の内容を、Hello
コンポーネントが出力する内容に置き換えます。
パッと見、React
クラスのインポートは不要に見えますが、JSX コードが React
クラスを使うコードに変換されるので、インポートしておかないとコンパイルエラーになります。
次の HTML ファイルから、上記のスクリプトを読み込みます。
メインプロセス (main.ts)
最後に、Electron アプリのエントリポイントとなるメインプロセス (main.ts
) の実装です。
このコードは特に変更はなく、単純に public/index.html
を読み込んで表示します。
関連記事