状態の記憶

ブラウザ履歴を操作する際、Inertia は履歴状態にキャッシュされたプロップデータを使ってページを復元します。しかし、Inertia はローカルのページコンポーネント状態まで復元することはできません。そのため、ブラウザ履歴に古い状態のページが残る可能性があります。

例えば、ユーザーがフォームの一部を入力した後に別ページへ移動し、再び戻ってきた場合、フォームはリセットされ、入力した内容は失われます。

この問題を回避するには、Inertia にブラウザ履歴に保存すべきローカルコンポーネントの状態を教えることができます。

ローカル状態の保存

ローカルコンポーネントの状態を履歴状態に保存するには、useRemember を使って Inertia にどのデータを記憶させるかを指定します。

これで、ローカルの form 状態が変更されるたびに、Inertia は自動的にこのデータを履歴状態に保存し、履歴操作時に復元します。

複数コンポーネント

ページに複数の Inertia の remember 機能を使用するコンポーネントがある場合、各コンポーネントに固有のキーを指定する必要があります。これにより、Inertia はどのデータをどのコンポーネントに復元するかを識別できます。

同じコンポーネントが複数インスタンス存在する場合は、モデルの ID などを使って各インスタンスにも固有のキーを指定してください。

フォームヘルパー

Inertia フォームヘルパー を使用している場合、フォームを作成するときに一意のフォームキーを第一引数として渡すことで、フォームデータやエラーを自動的に記憶させることができます。

dontRemember() メソッドを使うと、特定のフィールドを記憶させないようにできます。パスワードのような履歴状態に保存したくない機密フィールドで便利です。

手動で状態を保存する

useRemember フックはデータの変更を監視し、自動的に履歴状態に保存します。そして Inertia はページロード時にデータを復元します。

しかし、Inertia が提供する remember()restore() メソッドを使って手動で管理することも可能です。