Salesforce LWC学习(四十二) getRecordNotifyChange已弃用

salesforce,lwc,学习,四十二,getrecordnotifychange · 浏览次数 : 180

小编点评

**LWC 组件:RecordNotifyChangeSample** 该组件演示如何使用 `lightning/uiRecordApi` 获取最新版本数据并使用通知方法 `notifyRecordUpdateAvailable` 发送通知。 **主要属性:** * `recordId`:用于标识记录的 ID。 * `phone`:用于存储电话号码的属性。 * `industry`:用于存储行业代码的属性。 * `accountName`:用于存储账户名称的属性。 * `fields`:用于定义要查询的属性。 **生命周期方法:** * `wiredAccount`:在组件初始化时从 `getAccount` 方法中获取账户信息并赋值给 `accountRecord` 属性。 * `handleChange`:当属性值发生变化时触发事件,更新 `phone` 和 `industry` 属性。 * `handleSave`:当用户点击保存按钮时执行保存操作并使用 `saveAccount` 方法发送更新请求。 **通知方法:** * `notifyRecordUpdateAvailable`:当最新版本数据更新时触发此方法,并将更新记录 ID 发送给 `saveAccount` 方法。 **注意:** * `getRecordNotifyChange` 方法已在 Spring 23 版本中被标记弃用,建议使用 `notifyRecordUpdateAvailable` 方法。 * `recordId` 属性的类型应与 `Account` 类型的 `recordId`属性匹配。

正文

本篇参考:

https://developer.salesforce.com/docs/component-library/documentation/en/lwc/lwc.reference_get_record_notify

https://developer.salesforce.com/docs/component-library/documentation/en/lwc/reference_notify_record_update

我们在Salesforce LWC学习(二十九) getRecordNotifyChange(LDS拓展增强篇)中讲述了针对LDS通知获取最新版本数据使用。在winter23的v56版本中,此方法还在正常使用,在 spring23的v57版本中,getRecordNotifyChange方法已被标记弃用,官方推荐notifyRecordUpdateAvailable方法,功能相同。

notifyRecordUpdateAvailable方法和 getRecordNotifyChange传递形参一样,针对此方法,分成两步走。

1. 头部引入:import { notifyRecordUpdateAvailable } from 'lightning/uiRecordApi';

2. 需要刷新的地方使用:notifyRecordUpdateAvailable(items: Array<{recordId: string}>)

需要注意的是, recordId同样需要在user interface api支持的,否则不生效。

详情:https://developer.salesforce.com/docs/atlas.en-us.uiapi.meta/uiapi/ui_api_all_supported_objects.htm

接下来demo进行参考。

import { LightningElement, wire,api,track } from 'lwc';
import { getRecord,notifyRecordUpdateAvailable } from 'lightning/uiRecordApi';
import { refreshApex } from '@salesforce/apex';
import saveAccount from '@salesforce/apex/RecordNotifyChangeController.saveAccount';
import getAccount from '@salesforce/apex/RecordNotifyChangeController.getAccount';
import PHONE_FIELD from '@salesforce/schema/Account.Phone';
import INDUSTRY_FIELD from '@salesforce/schema/Account.Industry';
import NAME_FIELD from '@salesforce/schema/Account.Name';
export default class RecordNotifyChangeSample extends LightningElement {
    @api recordId;
    @track phone;
    @track industry;
    @track accountName;
    fields=[PHONE_FIELD,INDUSTRY_FIELD];
   accountRecord;

   @wire(getAccount,{recordId : '$recordId'})
   wiredAccount(value) {
       this.accountRecord = value;
       const { data, error } = value;
       if(data) {
           this.industry = data.Industry;
           this.phone = data.Phone;
           this.accountName = data.Name;
       }
   }


    handleChange(event) {
        if(event.target.name === 'phone') {
            this.phone = event.detail.value;
        } else if(event.target.name === 'industry') {
            this.industry = event.detail.value;
        }
    }

    async handleSave() {
        await saveAccount({ recordId: this.recordId, industry : this.industry, phone : this.phone})
        .then(result => {
            if(result === 'success') {
                refreshApex(this.accountRecord);
                notifyRecordUpdateAvailable([{recordId: this.recordId}]);
            } else {
                //TODO
            }
        })
        .catch(error => {
            //TODO
        });
    }

}

详情demo可以参考:https://boulder-bard-27f.notion.site/lightning-e757a8902c194f9bbe633b92a9d81673

总结:尽管官方弃用了此方法,但是没有提及后续会移除此方法,所以以前的方法可以保留,后续的话,推荐使用新方法。篇中有错误欢迎指出,有不懂欢迎留言。

与Salesforce LWC学习(四十二) getRecordNotifyChange已弃用相似的内容:

Salesforce LWC学习(四十二) getRecordNotifyChange已弃用

本篇参考: https://developer.salesforce.com/docs/component-library/documentation/en/lwc/lwc.reference_get_record_notify https://developer.salesforce.com/do

Salesforce LWC学习(四十五) lwc支持Console App控制Tab了

本篇参考:https://help.salesforce.com/s/articleView?id=release-notes.rn_lwc_workspaceAPI.htm&release=246&type=5 https://developer.salesforce.com/docs/compo

Salesforce LWC学习(四十) dynamic interaction 浅入浅出

本篇参考: Configure a Component for Dynamic Interactions in the Lightning App Builder - Salesforce Lightning Component Library Salesforce Help | Article G

Salesforce LWC学习(四十) datatable的dynamic action的小坑浅谈

本篇参考:https://developer.salesforce.com/docs/component-library/bundle/lightning-datatable/documentation 我们在项目中会用到针对table等显示 dynamic action的情况,即基于每行的特有属性

Salesforce LWC学习(四十一) If:true 即将弃用?

本篇参考: https://developer.salesforce.com/docs/component-library/documentation/en/lwc/lwc.reference_directiveshttps://developer.salesforce.com/docs/compo

Salesforce LWC学习(四十三) lwc 零基础学习路径的视频已上传B站

本篇参考:https://www.bilibili.com/video/BV1QM411G7pN/ 还记得salesforce零基础学习(一百二十五)零基础学习SF路径 中描述的那样,预计今年年底以前基于0基础学习的内容录制成视频,更好的更方便的进行学习和互动。当时的一个动机是以前公司做veeva的

Salesforce LWC学习(四十四) Datatable 显示日期类型的有趣点思考

本篇参考:https://developer.salesforce.com/docs/component-library/documentation/en/lwc/lwc.reference_salesforce_modules 背景: 项目中经常用到datatable显示日期类型字段,并要求日期类

salesforce零基础学习(一百三十六)零碎知识点小总结(八)

本篇参考: Salesforce LWC学习(七) Navigation & Toast https://developer.salesforce.com/docs/platform/lwc/guide/use-navigate-url-addressable.html https://help.s

salesforce零基础学习(一百三十八)零碎知识点小总结(十)

本篇参考: https://help.salesforce.com/s/articleView?id=release-notes.rn_apex_5level_SOQLqueries.htm&release=250&type=5 https://developer.salesforce.com/to

salesforce零基础学习(一百三十七)零碎知识点小总结(九)

本篇参考: https://help.salesforce.com/s/articleView?id=release-notes.rn_lab_conditional_visibiliy_tab.htm&release=250&type=5 https://help.salesforce.com/s