2024-08

JavaScript

【React】Reactでよく出るエラーと解決法まとめ

こんにちは、かつコーチです。前回まででテスト・デプロイ・ビルド最適化と、開発から公開までの一連の流れを見てきました。ここからは実践Tips編として、Reactを書いていると誰もが一度はぶつかる定番エラーを、原因と解決法つきでまとめて紹介しま...
JavaScript

【React】ビルド最適化:バンドルサイズを小さくする方法

こんにちは、かつコーチです。前回は開発・本番で値を切り替える環境変数の管理方法を解説しました。デプロイ・環境変数と整えてくると、次に気になってくるのが「アプリの表示が遅い」という体感速度の問題です。今回は、その原因になりやすいバンドルサイズ...
JavaScript

【React】環境ごとの環境変数管理(.env)

こんにちは、かつコーチです。前回はVercelを使ったReactアプリのデプロイ手順を解説しました。デプロイができるようになると次にぶつかるのが、「開発中と本番で、APIの向き先やキーを切り替えたい」という悩みです。今回は、Reactアプリ...
JavaScript

【React】Reactアプリをvercelにデプロイする方法

こんにちは、かつコーチです。前回はテスト編の締めくくりとして、Playwrightを使ったE2Eテストを解説しました。ここからはデプロイ編に入り、実際に作ったReactアプリを世の中に公開する方法を学んでいきます。初回の今回は、Vercel...
JavaScript

【React】E2Eテスト入門:Playwrightでブラウザ操作を自動化する

こんにちは、かつコーチです。前回は「コンポーネントのユニットテストを書く」というテーマで、個々のコンポーネントを切り離してテストする方法を解説しました。今回はテスト編の締めくくりとして、実際のブラウザを操作しながらアプリ全体の動きを検証する...
JavaScript

【React】コンポーネントのユニットテストを書く

こんにちは、かつコーチです。前回は、React Testing Library(RTL)の基本的な使い方として、コンポーネントの描画結果を検証する方法を解説しました。今回はいよいよ、クリックや入力といったユーザー操作を伴うコンポーネントのユ...
JavaScript

【React】React Testing Library入門

こんにちは、かつコーチです。前回は、テストフレームワークJestの基本文法と環境構築を解説しました。sumのような単純な関数のテストはできるようになりましたが、Reactのコンポーネントは「画面に何が表示されるか」「ボタンを押したらどう変化...
JavaScript

【React】Jestの基本:Reactでテストを書く準備

こんにちは、かつコーチです。前回までは認証・セキュリティ編として、Protected RouteやXSS対策を扱ってきました。安全なアプリが作れるようになったら、次に意識したいのが「そのコードが本当に正しく動いているか」を保証する仕組みです...
JavaScript

【React】ReactアプリのXSS対策

こんにちは、かつコーチです。前回は、ログイン必須ページを守るProtected Routeの実装方法を解説しました。「誰がアクセスできるか」を制御できるようになったところで、今回は少し違う角度のセキュリティ対策を扱います。それがXSS(クロ...
JavaScript

【React】Protected Route(ログイン必須ページ)の実装方法

こんにちは、かつコーチです。前回は、JWTを使ってログイン状態を保持する仕組みについて解説しました。トークンを発行してフロント側で保持できるようになったら、次に考えたいのが「ログインしていない人には見せたくないページ」の扱いです。マイページ...
JavaScript

【React】JWTの扱い方:ログイン状態を保持する仕組み

こんにちは、かつコーチです。前回はReactアプリにおける認証の実装パターンを、全体像から解説しました。今回はその認証の裏側で動いている仕組み、JWT(JSON Web Token)にフォーカスして、Reactアプリでどう扱えばよいかを詳し...
JavaScript

【React】Reactアプリに認証機能を実装するパターン

こんにちは、かつコーチです。前回はReact Hook Formを使ったフォームバリデーションの実装方法を解説しました。フォームでログイン情報を受け取れるようになったところで、今回はいよいよ「認証」を扱います。認証はライブラリの使い方だけで...
JavaScript

【React】React Hook Formでフォームバリデーションを実装する方法

こんにちは、かつコーチです。前回はReact Query(TanStack Query)を使ったデータ取得の効率化について解説しました。データを「取得して表示する」側の話が一段落したので、今回は反対に「ユーザーからデータを受け取る」側、フォ...
JavaScript

【React】React Query(TanStack Query)でデータ取得を効率化する

こんにちは、かつコーチです。前回はfetchとuseEffectを組み合わせた基本的なデータ取得の方法を解説しました。isLoadingやerrorの管理、リクエストのキャンセルまで自前で書くと、コード量がどんどん増えていくことを実感しても...
JavaScript

【React】fetchでAPIからデータを取得して表示する方法

こんにちは、かつコーチです。前回はRedux・Zustand・Context APIの使い分けについて解説しました。状態管理の仕組みが分かってきたところで、今回は「外部のAPIからデータを取得して画面に表示する」という、実務では必ず通る道を...
JavaScript

【React】Redux・Zustand・Context API、結局どれを使うべき?

こんにちは、かつコーチです。ここまで3回にわたって、useReducer、Context API、Redux Toolkit、Zustandと、状態管理まわりの選択肢を一つずつ解説してきました。「結局、自分のプロジェクトではどれを使えばいい...
JavaScript

【React】Zustand入門:シンプルな状態管理ライブラリ

こんにちは、かつコーチです。前回は、状態管理ライブラリの定番であるRedux Toolkitの入門編を解説しました。Redux Toolkitは強力な反面、slice の作成・store の設定・Provider の配置など、覚えることがそ...
JavaScript

【React】Redux Toolkit入門:状態管理ライブラリの定番

こんにちは、かつコーチです。前回は、Context APIを使って実践的なグローバル状態を作る方法を解説しました。Context APIはアプリ全体の状態を共有するのに便利ですが、状態の種類が増えたり、更新ロジックが複雑になったりすると、だ...
JavaScript

【React】Context APIで実践的なグローバル状態を作る

こんにちは、かつコーチです。前回は useReducer で複雑な状態管理を整理する方法を解説しました。今回は、その useReducer とセットでよく使われる「Context API」を使って、複数のコンポーネントから参照できるグローバ...
JavaScript

【React】useReducerで複雑な状態管理を整理する

こんにちは、かつコーチです。前回は、カスタムフックを自作してロジックを再利用する方法を解説しました。今回は、状態管理の話をもう一段階深く掘り下げます。useState で状態を管理していると、フォームの入力値・エラー内容・送信中フラグなど、...