Inertiajsは、シングルページアプリケーション(SPA)の状態管理を、サーバー側のルーティングとクライアント側のレンダリングとブレンドするユニークなアプローチを介して処理し、ReactやVueだけのようなフレームワークで構築された従来のSPAで典型的な別のクライアント側の状態管理システムの必要性を排除します。 inertiajsがどのように状態を管理し、スパのコンテキストで応答性とスムーズな遷移を維持するかについての包括的な説明を次に示します。
Inertiajsは、本質的に、フルページのリロードを必要とせずにページ訪問を許可するクライアント側のルーティングライブラリとして機能します。各ナビゲーションで完全なHTMLページを取得するブラウザの代わりに、慣性はリンククリックをインターセプトし、サーバーからJSON応答を取得します。これらの応答には、ページの状態データ(小道具)とともにページコンポーネント名が含まれています。このデータ駆動型アプローチは、サーバーが各ページのクライアントに送信される状態またはデータを制御することを意味します。その後、慣性はインターフェイスの必要な部分のみを動的にレンダリングおよび更新し、スムーズなスパエクスペリエンスになります。
コア状態管理メカニズムは、現在の「ページオブジェクト」を保持することを中心に展開します。これには、レンダリングするコンポーネントとそれに渡すプロップが含まれます。サーバーは、特定のルートの関連状態データを使用してこのページオブジェクトを生成します。ナビゲーションが発生すると、慣性は完全なページリロードではなくXHR(AJAX)リクエストを実行します。新しいページオブジェクトを受信し、現在のオブジェクトと比較し、必要に応じて以前の状態を失うことなくコンポーネントと小道具を交換することにより、フロントエンドを更新します。
ナビゲーション全体またはフォーム入力保持などの場合の状態を保存するために、inertiaは「userememb」と呼ばれる機能を提供します。このユーティリティは、ブラウザの履歴状態にコンポーネント状態(しばしば形成される)を節約し、ユーザーが入力を失うことなくナビゲートできます。 `useremember`は任意のデータオブジェクトに適用でき、一意のキーを与えることで、ユーザーがそのページまたはコンポーネントを再訪したときにどの保存状態を復元するかを知っています。これは、クライアント側のみの状態の動作を模倣しますが、スパのナビゲーションライフサイクルを通じてそれを管理します。
フォームを扱うとき、Inertiaは、フォーム状態を管理するだけでなく、明示的にクリアされない限り、ページ訪問の間に状態を自動的に記憶する強化されたフォームヘルパー「UseForm」を提供します。これは、ユーザーがナビゲーションに関するフォームデータを失うことはなく、複雑なクライアント側の状態ソリューションを必要とせずにUXを改善することを意味します。
慣性は、すべてのリクエストでサーバーから渡された共有プロップを使用して、ページ間でグローバルデータの共有をサポートしています。これには、認証ステータス、ユーザー情報、フラッシュメッセージなどのデータが含まれます。これらの共有された小道具は、すべてのページコンポーネントの小道具に自動的にマージされ、追加のマニュアル管理なしでアプリ全体で一貫した集中状態を利用できます。
プロトコル慣性には、クライアントとサーバーのアセットの同期を処理するバージョン機能も含まれており、古いJavaScriptまたはCSSファイルによって引き起こされる状態の不一致を回避します。サーバーがバージョンの変更を検出すると、フルページのリロードが強制的にアプリ状態をリセットし、最新の資産をロードします。
Inertiaの状態はサーバー側のルートやコントローラーと密接に統合されているため、サーバーロジックがデータの可用性を決定し、Frontendがそのデータを宣言的に消費する使用パターンを促進します。その結果、非同期データの取得と同期の処理など、クライアントが多いスパに固有の州管理の複雑さの多くは、サーバー側のフレームワークにオフロードされます。これにより、クライアントコードが簡素化され、状態の同期周辺のボイラープレートが少なくなります。
要約すると、inertiajsは以下のスパで状態を処理します。
-Serverルートから送信されたJSONページオブジェクトを使用して、現在のページ状態を表します。
- ナビゲーションをインターセプトして、完全なHTMLページではなく最小限のJSONデータを取得します。
- 各ルートの変更でプロップを使用して、適切なクライアント側コンポーネントを動的にレンダリングします。
- ブラウザ履歴を介してナビゲーション全体でコンポーネント状態を保持するために「useremember」を提供します。
- 特殊なフォームヘルパー(「useform」)を使用して、フォーム状態を管理および覚えています。
- スパ全体でグローバルで一貫した状態の共有サーバーデータ(共有小道具)を許可します。
- クライアントとサーバーを同期させ、アプリ状態の整合性を維持するための資産バージョンの管理。
- ビジネスとデータのロジックをサーバー側にロードし、クライアント側の複雑さを最小限に抑えます。