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

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

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

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

メモ

コードがフレームワークのコールスタックの一部として実行される場合は、$A.getCallback() を使用する必要はありません。たとえば、コードがイベントを処理している場合や、サーバ側のコントローラアクションのコールバックにある場合です。

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

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

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

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

コールバックやタイムアウトなど非同期コードのコンポーネントを参照する場合は、常に isValid() チェックを追加します。UI の別の場所で操作をしている間に非同期コードが実行されると、フレームワークは、非同期要求を実行したコンポーネントを非表示にして破棄します。引き続きそのコンポーネントが参照されますが、コンポーネントは無効になっています。isValid() コールを追加し、非同期要求の結果を処理する前にコンポーネントがまだ有効であることをチェックします。

メモ

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

警告