この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

フレームワークのライフサイクル外のコンポーネントの変更

$A.getCallback() を使用して、setTimeout() コールの場合のように通常の表示ライフサイクル外のコンポーネントを変更するコードをラップします。$A.getCallback() コールは、フレームワークが変更されたコンポーネントを確実に表示し、すべてのエンキューされたアクションが処理されるようにします。

$A.run() は廃止されました。代わりに $A.getCallback() を使用します。

メモ

コードがフレームワークのコールスタックの一部として実行される場合は、$A.getCallback() を使用する必要はありません。たとえば、コードがイベントを処理している場合や、サーバ側のコントローラアクションのコールバックにある場合です。ただし、force:recordData を使用してレコードを作成する場合など、Lightning データサービスにコールバックを渡す場合を除きます。コールバックが $A.getCallback() でラップされないまま渡されると、コンポーネントの非公開属性にアクセスしようとしたときにアクセスチェックに失敗します。

$A.getCallback() を使用する必要がある場合の例として、イベントハンドラで window.setTimeout() をコールして、一部のロジックを遅延実行する場合が挙げられます。この場合は、コードがフレームワークのコールスタック外に配置されます。

次のサンプルでは、5 秒の遅延後に、コンポーネントの visible 属性を true に設定します。

1window.setTimeout(
2    $A.getCallback(function() {
3        cmp.set("v.visible", true);
4    }), 5000
5);

フレームワークが変更されたコンポーネントを確実に表示するようにする $A.getCallback() で、コンポーネントの属性を更新するコードがどのようにラップされているかに注意します。

コンポーネントが無効な場合、cmp.set() コールは何もしないため、この setTimeout() コール内で cmp.isValid() チェックは必要ありません。

メモ

$A.getCallback() でラップされた関数への参照を保存しないでください。後でこの参照を使用してアクションを送信すると、保存されたトランザクション状態により、アクションが中止されます。

警告