LWC Wire Service Code Examples

Problem: You need to access object metadata like field labels or picklist values.

Solution:

JavaScript (dynamicForm.js):

import { LightningElement, api, wire } from 'lwc';
import { getObjectInfo } from 'lightning/uiObjectInfoApi';
import CONTACT_OBJECT from '@salesforce/schema/Contact';

export default class DynamicForm extends LightningElement {
    @api recordId;

    @wire(getObjectInfo, { objectApiName: CONTACT_OBJECT })
    objectInfo;

    get fields() {
        if (!this.objectInfo?.data) {
            return [];
        }

        const fieldMap = this.objectInfo.data.fields;
        const fieldList = [];

        // Get specific fields
        const fieldNames = ['Name', 'Email', 'Phone', 'Title'];
        
        fieldNames.forEach(fieldName => {
            if (fieldMap[fieldName]) {
                fieldList.push({
                    apiName: fieldName,
                    label: fieldMap[fieldName].label,
                    type: fieldMap[fieldName].dataType,
                    required: !fieldMap[fieldName].updateable || fieldMap[fieldName].required
                });
            }
        });

        return fieldList;
    }

    get picklistValues() {
        if (!this.objectInfo?.data) {
            return {};
        }

        const fieldMap = this.objectInfo.data.fields;
        const picklistMap = {};

        Object.keys(fieldMap).forEach(fieldName => {
            const field = fieldMap[fieldName];
            if (field.dataType === 'Picklist' && field.picklistValues) {
                picklistMap[fieldName] = field.picklistValues.map(pv => ({
                    label: pv.label,
                    value: pv.value
                }));
            }
        });

        return picklistMap;
    }
}

Explanation:

Best Practices: