当記事は公開されてから 1 年以上経過している記事です。
「LINE と共に React (Vite) を学ぶ」の改善提案など気軽にご協力いただければ幸いです。
Issue はこちらでよろしくお願いします:
この度、昨年の年末より LINE Front-end Framework を React 上で動かす Web アプリについて昨年の年末よりハンズオンの企画を進めておりました。
企画にあたって利用するフロントエンド・フレームワークの候補は下記の通りです。
- create-react-app (CRA)
- React on Vite
- Next.js
今回のターゲットにフロントエンド初学者を想定しています。
率直に言うと、下記の通り目標を設定しました。
- React を触る
- JSX (TSX) に慣れる
今流行りの Next.js では getStaticPaths
や getStaticProps
に代表される独自のプレレンダリング機能を始め、把握する情報は多いと判断しました。
また CRA は React 経験者誰しもが通る道にあるフロントエンド・フレームワークですが、最近の開発速度が低調になってきている点は非常に気掛かりです。
CRA の低調な開発に肩を並べるように、時を同じく Vite 2 の React サポート入り もあって、広く Vite がフロントエンドのビルドに使われ始めようとしています。
フロントエンド・フレームワークは三者三様、様々な背景が存在します。どれを選択すれば良いか、逆に選択してはいけないといったことも特にありません。
もう少し喋っておきたいこと
今回の LIFF アプリを製作する上で、近くリリースが予定されている React 18 のコンポーネントのライフサイクルが大きく変わるという話があります。
先日、発表された StrictMode が与える影響
2022 年 02 月現在、 React の stable バージョンは 17.0.2
です。昨年の React Conf 2021 でも React 18 の セッション があったように、近く React 18 がリリースされます。
数ある変更が存在する中で、特に useEffect
周りの挙動に変更が予定されています。
具体的にはコンポーネントがマウントされた際、通常の useEffect
に加え余計に発火されてしまいます。
そもそも StrictMode を取り入れる動機が、コンポーネントをアンマウントする代わりに、状態を保持することを可能にするため。
この目的を達成するため、コンポーネントをアンマウントするときと同じライフサイクルフックを呼び出しますが、コンポーネントと DOM 要素の両方の状態を保持することになります。
これこそ、コンポーネントのマウントとアンマウントを複数回繰り返すことを意味しています。
詳しくは 参照 をご確認いただければ幸いです。
そう遠くない将来においては、複数回呼び出される可能性のある useEffect
で init()
しない方が良いでしょう。
LINE Developer コミュニティから
今回の教材は Zenn book を利用しています。
https://zenn.dev/jiyuujin/books/react-x-vite-x-liff
3 月 3 日当日の動画は、アーカイヴ化されています。
https://www.youtube.com/watch?v=D8GeQyrueEY
その他
Vite または Next.js 上で動く LIFF アプリをご確認いただければ幸いです。
また Vite 上で React を動作させる サンプル や、 Next.js 上で React を動作させる サンプル も合わせご確認いただきたい。