notifyRecordUpdateAvailable(recordIds)

Lightning データサービスが、ワイヤアダプタのレコードデータを最新状態に保つための適切なアクションを実行できるように、レコードデータが変更されたことを Lightning データサービスに通知します。この関数をコールして、Lightning データサービスのメカニズム外 (命令 Apex 経由や、サードパーティフレームワークを介したユーザインターフェース API のコールなど) でレコードが変更されたことを Lightning データサービスに通知します。この関数は getRecordNotifyChange(recordIds) よりも優先されます。

構文 

1import { notifyRecordUpdateAvailable } from 'lightning/uiRecordApi';
2
3notifyRecordUpdateAvailable(items: Array<{recordId: string}>)

パラメータ 

  • items — (必須) オブジェクトの形状が { recordId: string } のオブジェクトの配列。レコード ID は 15 または 18 文字であり、サポートされるオブジェクトから取得する必要があります。

戻り値 

Lightning データサービスが処理を完了したときに解決される Promise オブジェクト。Promise が解決される前に、影響を受けるすべてのワイヤアダプタに更新情報が送信されます。Promise を使用して、Lightning データサービスがいつ処理を完了したかを判断します。Promise の解決された値の場合は void になります。

使用方法 

notifyRecordUpdateAvailable(recordIds) をコールすると、指定された recordID のデータが変更されていることが示されるため、Lightning データサービスキャッシュおよびワイヤを更新できます。

notifyRecordUpdateAvailable(recordIds) は、getRecordNotifyChange(recordIds) (廃止) とは異なり、インスタンス化されたすべてのコンポーネントによって結び付けられたレコードデータを考慮します。提供された recordIds のいずれかのレコードデータを使用するすべてのワイヤの場合、Lightning データサービスでは、ワイヤの新しいデータが取得され、データが変更された場合に、更新された値がワイヤに対して再生成されます。@wire の通常のセマンティクスに従って、データが変更されていないワイヤに値が再送信されることはありません。

Note

次の例では、Apex メソッドを命令としてコールしてレコードを更新した後に notifyRecordUpdateAvailable() をコールします。

1import { LightningElement, wire } from 'lwc';
2import { getRecord, notifyRecordUpdateAvailable } from 'lightning/uiRecordApi';
3import apexUpdateRecord from '@salesforce/apex/Controller.apexUpdateRecord';
4
5export default class Example extends LightningElement {
6  @api recordId;
7
8  // Wire a record
9  @wire(getRecord, { recordId: '$recordId', fields: ... })
10  record;
11
12  async handler() {
13    // Do something before the record is updated
14    showSpinner();
15
16    // Update the record via Apex
17    await apexUpdateRecord(this.recordId);
18
19    // Notify LDS that you've changed the record outside its mechanisms
20    // Await the Promise object returned by notifyRecordUpdateAvailable()
21    await notifyRecordUpdateAvailable([{recordId: this.recordId}]);
22    hideSpinner();
23  }
24}

レコードの更新後に Apex を介して notifyRecordUpdateAvailable() がコールされるようにするには、async/await パターンまたは Promise チェーンを使用します。

@wire を使用して Apex メソッドでレコードデータを取得する場合、@wire にバインドされている設定を使用してデータの取得とキャッシュの更新を行う、refreshApex() をコールします。

Note

notifyRecordUpdateAvailable() は一部のレコードが古くなっていることを LDS に通知し、LDS キャッシュにあるそれらのレコードを更新します。

関連トピック

The Japanese Summer '24 guide is now live

日本語の Summer '24 ガイドが公開されました! 「Component Reference (コンポーネントリファレンス)」は、以前と同様にコンポーネントライブラリにあります。