首页 > 其他分享 >Salesforce LWC学习(四十九) RefreshView API实现标准页面更新,自定义组件自动捕捉更新

Salesforce LWC学习(四十九) RefreshView API实现标准页面更新,自定义组件自动捕捉更新

时间:2024-03-20 22:11:07浏览次数:14  
标签:Account Salesforce 自定义 更新 lightning 组件 页面

本篇参考: 

https://developer.salesforce.com/docs/platform/lwc/guide/data-refreshview.html

https://developer.salesforce.com/docs/platform/lwc/guide/reference-lightning-refreshview.html

https://trailhead.salesforce.com/trailblazer-community/feed/0D54V00007KX6dASAT

我们在前篇中讲述了两种标准页面更新的情况下,自定义页面如何捕捉以及如何操作Salesforce LWC学习(四十七) 标准页面更新以后自定义页面如何捕捉?

随着lwc的更新,我们同样可以通过 refreshView来进行捕捉和自定义组件的更新。

RefreshView API简单介绍

我们直接看一下例子然后进行一下分解:

RefreshViewSampleController: 方法用于获取Account的信息

public with sharing class RefreshViewSampleController {
    @AuraEnabled(cacheable=false)
    public static Account getAccount(String recordId) {
        Account accountItem = [SELECT Name,Industry,Phone from Account where Id = :recordId limit 1];
        system.debug(accountItem);
        return accountItem;
    }
}

 refreshViewSample.html:显示Account的Name

<template>
    {accountName}
</template>

refreshViewSample.js: 用来获取Account信息,赋值Account Name以及注册和解除注册 RefreshHandler。这里我们细节的分析一下。

1. 头部需要引入必要的方法。import {registerRefreshHandler,unregisterRefreshHandler } from "lightning/refresh";  用来注册/取消注册在refresh process中的refresh handler.

2. connectedCallback来注册refreshHandler。该方法有两个参数。

  • contextElement—(Required) 一个html element代表参与在刷新流程中的container,通常可以用this。
  • providerMethod—(Required) 一个函数,用于标识刷新过程开始时要调用的回调函数。 处理程序回调需要返回一个代表其特定元素的刷新状态的 Promise。

3. disconnectedCallback来取消refreshHandler。

这里我们看一下第16行的注释。如果当前的org启用了lws,则使用目前的代码,如果当前的org没有启用lws,使用了lightning locker,则打开16行的注释并且将14行注释。

 1 import { LightningElement, track, wire, api } from "lwc";
 2 import getAccount from "@salesforce/apex/RefreshViewSampleController.getAccount";
 3 import {
 4   registerRefreshHandler,
 5   unregisterRefreshHandler
 6 } from "lightning/refresh";
 7 export default class refreshViewSample extends LightningElement {
 8   accountName;
 9   refreshHandlerID;
10   @api recordId;
11 
12   connectedCallback() {
13     // Session Setting --> Use Lightning Web Security for Lightning web components and Aura components
14     this.refreshHandlerID = registerRefreshHandler(this, this.refreshHandler);
15     // if the component runs in an org with Lightning Locker instead of LWS, use
16     // this.refreshHandlerID = registerRefreshHandler(this.template.host, this.refreshHandler.bind(this));
17     this.retrieveAccount();
18   }
19 
20   disconnectedCallback() {
21     unregisterRefreshHandler(this.refreshHandlerID);
22   }
23 
24   refreshHandler() {
25     return new Promise((resolve) => {
26       this.retrieveAccount();
27       resolve(true);
28     });
29   }
30 
31   retrieveAccount() {
32     getAccount({ recordId: this.recordId })
33       .then((result) => {
34         this.accountName = result.Name;
35       })
36       .catch((error) => {
37         console.log("execute error");
38       });
39   }
40 }

效果展示:

除这种system/app-trigger以外,还可以是两个组件间的触发方式。比如一个组件去this.dispatchEvent(new RefreshEvent()); 另外一个组件进行注册以及处理。这种场景不在本篇的范围,感兴趣的小伙伴可以自行尝试。

总结:篇中通过一个demo来介绍RefreshView API的两个方法以及所可以达到的标准页面更新,自定义组件进行捕捉的demo。使用这个功能需要启用 lightning locker或者lightning web security,此api还有一些其他的方法以及一些限制没有讲,只是抛砖引玉,感兴趣的小伙伴可以自行查看文档。篇中有错误地方欢迎指出,有不懂欢迎留言。

 

标签:Account,Salesforce,自定义,更新,lightning,组件,页面
From: https://www.cnblogs.com/zero-zyq/p/18085726

相关文章

  • 2024年03月 Discourse 3.3.0.beta1 版本的更新
    在这个版本的更新中Discourse完成了Ember5版本的升级和更新。Ember.js是一个用于创建web应用的开源JavaScriptMVC框架,采用基于字符串的Handlebars模板,支持双向绑定、观察者模式、计算属性(依赖其他属性动态变化)、自动更新模板、路由控制、状态机等。Ember是一个雄心勃......
  • Windows 10企业版LTSC系统 更新错误(0x8024401c) 解决方法
    报错0x8024401c,遇到这种情况不要担心,往下看!!!以系统管理员的身份执行命令提示符,然后执行下列三行指令:netstopwuauservregdeleteHKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdatenetstartwuauserv操作如下:C:\Windows\system32>netstopwuauservWind......
  • 前端学习-vue视频学习011-自定义hooks
    尚硅谷视频链接axios了解了一下axios的语法importaxiosfrom'axios'exportdefaultfunction(){letdogList=reactive(['https://images.dog.ceo/breeds/pembroke/n02113023_4972.jpg'])asyncfunctiongetDog......
  • Spring boot2.7整合jetcache方法缓存 处理数据发生变化时同步更新缓存 删除缓存操作
    上文Springboot2.7整合jetcache方法缓存我们做了个方法缓存的案例可以将接口内容缓存起来是能大大提高效率的但是我们接口的数据大多来自数据库如果我们调用增删查改它的数据变化了那缓存的内容就会因为没有及时更新变的不准确例如我们这样我们在上面定义了......
  • python之自定义表头、列表内容导出excel文件例子
    函数三个参数outputfile:导出excel文件的位置,没有的话在该位置建该文件title:表头args:列的内容,每列是一个列表importxlsxwriterdefwriteExcel(outputfile,title,*args):wb=xlsxwriter.Workbook(outputfile)#创建sheetsheet=wb.add_worksheet("Sh......
  • IDEA - 文件上方的文档注释如何自定义
      1、在设置中打开文件和代码模板,根据描述中的参考信息进行自定义配置File>Settings>Editor>FileandCodeTemplates 2、配置完成之后的效果如下    — 要养成终生学习的习惯—......
  • 100美金的Salesforce新产品Pro Suite, 能否成为中小企业的首选?
    毋庸置疑,Salesforce在其运营的几乎所有市场中都占据主导地位。Salesforce以23%的CRM市场份额遥遥领先,包括销售、服务、营销、商业和集成类别的应用程序。但通常情况下,Salesforce并不是中小型企业或初创企业的首选,企业会寻求更具成本效益的选择,例如Monday.com、HubSpot、Pipedriv......
  • Java数据类型详解(更新中)
    基本数据类型概览共8种:整型byte、short、int、long         浮点型float、double           字符型char           布尔型boolean大小1位即1bit,一字节(byte)等于8bit数据类型数据范围byte8位(一个字节)-127~128(2^7)short......
  • Java从萌新小白到顶级大牛(3更新中)
    模块从Java9开始,JDK又引入了模块(Module)。什么是模块?这要从Java9之前的版本说起。我们知道,.class文件是JVM看到的最小可执行文件,而一个大型程序需要编写很多Class,并生成一堆.class文件,很不便于管理,所以,jar文件就是class文件的容器。在Java9之前,一个大型Java程序会生成自......
  • dremio 自定义登陆以及简单sso
    一个简单的dremio集成自己外部登陆的,处理方法是通过nginx进行proxy同时开发自己的login服务,此服务调用的dremiologinapi对于自己的登陆页面调用自己开发的loginapi,然后将登陆信息写入到localstorage中,之后进行一个dremionginx访问地址的重定向因为dremio默认web登......