最近Reactをいじっているので忘れないためのメモ書きです。主な内容は以下。
create-react-app
を使わない最小限の環境構築- React Hooksの
useState
,useEffect
の超単純な使い方
特に1に関してはコチラを見ながら自分でやってみた内容をまとめただけです。
全コード(GitHub): Link
Environment (2021年3月)
- Ubuntu 16.04
- node v14.15.5
- npm 6.14.11
- react 17.0.1
環境構築
プロジェクトディレクトリの作成
1 | mkdir app && cd app |
ライブラリインストール
1 | npm install -D typescript webpack webpack-cli ts-loader html-webpack-plugin webpack-dev-server |
設定ファイルの作成/編集
tsconfig.json
1 | npx tsc --init |
上記でtsconfig.json
を作成後、"jsx": "react"
のみの変更でとりあえず動く。
サーバアプリだと出力先ディレクトリ(outDir
)や入力元ディレクトリ(include: ["src"]
)も変更するが、フロントエンドの場合はwebpackの方で設定するので基本不要。
webpack.config.js
基本的にコチラを真似ればOK。
1 | const HtmlPlugin = require('html-webpack-plugin') |
package.json
1 | "scripts": { |
npm run build
でビルドnpm run start
でwebpack.config.js
のdevServer
の項目で指定した設定でlocalhostサーバが起動する。
簡単な時計を作る
時刻を使う上でmomentが便利なのでインストール。
1 | npm install -S moment |
index.html
1 |
|
index.tsx
1 | import React, { useState, useEffect } from "react" |
usetState
は状態変数(currentDisp
)と、その変数に対するsetter関数(setCurrentDisp
)のペアを返すuseEffect
は描画更新に付随して実行される。第2引数に依存変数のリストを与えることで、「何が更新された時に実行して欲しいか」を制御できる。