@salesforce/schema からのオブジェクトと項目のインポート

オブジェクトや項目への参照をインポートした場合、Salesforce はオブジェクトや項目が存在することを確認し (タイポも見つけます)、オブジェクトや項目が削除されることを防止し、名前変更されたオブジェクトや項目をコンポーネントのソースコードにカスケードします。また、連動オブジェクトや連動項目が変更セットおよびパッケージに含まれることも確認します。オブジェクトや項目への参照をインポートすると、オブジェクトや項目の名前が変更されても、コードは確実に機能します。

コンポーネントで Apex クラスを介してオブジェクトを取得し、@salesforce/schema からオブジェクトへの参照をインポートする場合、getSObjectValue() をコールしてオブジェクトから項目値を取得します。

1getSObjectValue(sobject, fieldApiName);
  • {sobject} — Apex メソッドから返されるオブジェクト。
  • {fieldApiName} — 項目の API 参照名。値は文字列、または @salesforce/schema からインポートされた項目への参照にすることができます。最大 5 レベルの拡張項目を指定できます。たとえば、Opportunity.Account.CreatedBy.LastModifiedById は 4 レベルの拡張項目を返します。

lwc-recipesapexStaticSchema コンポーネントを見てみましょう。コンポーネントはそのデータを、1 つの取引先責任者を返す Apex メソッドから取得します。

取引先責任者 Amy Taylor (役職: VP of Engineering) とメールアドレスが表示されます。

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 プロパティに結び付けられています。テンプレートの nametitleemail プロパティには、指定された項目から値を抽出する 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

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