データガイドライン
Lightning データサービス
Apex メソッドのインポート
コンポーネントへの Apex メソッドの公開
コンポーネントへの Apex メソッドの結び付け
命令としての Apex メソッドのコール
Apex アクションの一括処理
クライアント側キャッシュ
オブジェクトと項目のインポート
Apex クラスの保護
Apex からの API のコール
@salesforce/schema からのオブジェクトと項目のインポートオブジェクトや項目への参照をインポートした場合、Salesforce はオブジェクトや項目が存在することを確認し (タイポも見つけます)、オブジェクトや項目が削除されることを防止し、名前変更されたオブジェクトや項目をコンポーネントのソースコードにカスケードします。また、連動オブジェクトや連動項目が変更セットおよびパッケージに含まれることも確認します。オブジェクトや項目への参照をインポートすると、オブジェクトや項目の名前が変更されても、コードは確実に機能します。
コンポーネントで Apex クラスを介してオブジェクトを取得し、@salesforce/schema からオブジェクトへの参照をインポートする場合、getSObjectValue() をコールしてオブジェクトから項目値を取得します。
1getSObjectValue(sobject, fieldApiName);{sobject} — Apex メソッドから返されるオブジェクト。{fieldApiName} — 項目の API 参照名。値は文字列、または @salesforce/schema からインポートされた項目への参照にすることができます。最大 5 レベルの拡張項目を指定できます。たとえば、Opportunity.Account.CreatedBy.LastModifiedById は 4 レベルの拡張項目を返します。lwc-recipes の apexStaticSchema コンポーネントを見てみましょう。コンポーネントはそのデータを、1 つの取引先責任者を返す Apex メソッドから取得します。

1// ContactController.cls
2public with sharing class ContactController {
3 @AuraEnabled(cacheable=true)
4 public static Contact getSingleContact(){
5 return [SELECT Id, Name, Title, Phone, Email, Picture__c FROM Contact LIMIT 1];
6 }
7
8}JavaScript は getSObjectValue 関数と getSingleContact メソッドを @salesforce/apex からインポートします。取引先責任者項目への参照を @salesforce/schema からインポートします。
Apex メソッドは contact プロパティに結び付けられています。テンプレートの name、title、email プロパティには、指定された項目から値を抽出する getSObjectValue() をコールする getter があります。
1// apexStaticSchema.js
2import { LightningElement, wire } from "lwc";
3import { getSObjectValue } from "@salesforce/apex";
4import getSingleContact from "@salesforce/apex/ContactController.getSingleContact";
5
6import NAME_FIELD from "@salesforce/schema/Contact.Name";
7import TITLE_FIELD from "@salesforce/schema/Contact.Title";
8import EMAIL_FIELD from "@salesforce/schema/Contact.Email";
9
10export default class ApexStaticSchema extends LightningElement {
11 @wire(getSingleContact) contact;
12
13 get name() {
14 return this.contact.data ? getSObjectValue(this.contact.data, NAME_FIELD) : "";
15 }
16 get title() {
17 return this.contact.data ? getSObjectValue(this.contact.data, TITLE_FIELD) : "";
18 }
19 get email() {
20 return this.contact.data ? getSObjectValue(this.contact.data, EMAIL_FIELD) : "";
21 }
22}1<!-- apexStaticSchema.html -->
2<template>
3 <lightning-card title="ApexStaticSchema" icon-name="custom:custom63">
4 <template lwc:if={contact.data}>
5 <div class="slds-m-around_medium">
6 <p>{name}</p>
7 <p>{title}</p>
8 <p><lightning-formatted-email value={email}></lightning-formatted-email></p>
9 </div>
10 </template>
11 <template lwc:elseif={contact.error}>
12 <c-error-panel errors={contact.error}></c-error-panel>
13 </template>
14 </lightning-card>
15</template>The Japanese Summer '24 guide is now live