クエリパラメータの追加
URL にクエリパラメータを追加するには、PageReference.state
プロパティを更新します。ナビゲーションサービスは PageReference
を使用して URL を生成します。state
プロパティのキー - 値ペアは URL クエリパラメータにシリアライズされます。クエリパラメータは、ユーザが保存またはブックマークできるページとフォームの具体的な URL を記述します。
state
プロパティを使用するときは、次の点に留意してください。
PageReference
オブジェクトは凍結されているので、直接変更することはできません。変更されたstate
を持つ同じページに移動するには、現在のPageReference
をコピーし、Object.assign({}, pageReference)
を使用してコピーを変更します。state
プロパティでは、名前空間プレフィックスの後に続けて 2 つのアンダースコア (__
) を使用する必要があります。コンポーネントが管理パッケージの一部ではない場合、名前空間プレフィックスにc
を使用します。コンポーネントが管理パッケージの一部である場合、パッケージの名前空間を使用します。PageReference.state
のキー - 値ペアは URL クエリパラメータにシリアライズされるため、すべての値は文字列でなければなりません。state
の値を使用するコードは、値を正しい形式で解析する必要があります。state
オブジェクトの値を削除するには、その値をundefined
として定義します。- HTTPS を使用するときでも、URL パラメータの個人データは安全ではありません。詳細は、「Storing Sensitive Data (機密データの保存)」を参照してください。
- Aura または LWR テンプレートで作成された Lightning Experience および Experience Builder サイトでは、URL クエリ文字列のみが変更されても、ビューは再表示されません。URL クエリ文字列の変更に反応させるには、コンポーネントから
CurrentPageReference
オブジェクトを観察し、ページ参照のstate
と比較することを推奨します。
次の例のコンポーネントには、Hide Panel という表示ラベルのリンクがあり、このリンクをクリックするとラベルは Show Panel に変わります。いずれかのリンクをクリックすると、現在のページの状態が更新されます。ページの状態が変更されると、@wire(CurrentPageReference)
でデコレートされた this.currentPageReference
プロパティが更新されます。コンポーネントはパネルを表示または非表示にするために再表示され、リンクラベルが更新されます。