Salesforce LWC学习(四十九) RefreshView API实现标准页面更新,自定义组件自动捕捉更新
本篇参考:
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还有一些其他的方法以及一些限制没有讲,只是抛砖引玉,感兴趣的小伙伴可以自行查看文档。篇中有错误地方欢迎指出,有不懂欢迎留言。
Salesforce LWC学习(四十九) RefreshView API实现标准页面更新,自定义组件自动捕捉更新的更多相关文章
- Salesforce LWC学习(四十二) getRecordNotifyChange已弃用
本篇参考: https://developer.salesforce.com/docs/component-library/documentation/en/lwc/lwc.reference_get ...
- Salesforce LWC学习(三十九) lwc下quick action的recordId的问题和解决方案
本篇参考: https://developer.salesforce.com/docs/component-library/bundle/force:hasRecordId/documentation ...
- Salesforce LWC学习(四十) dynamic interaction 浅入浅出
本篇参考: Configure a Component for Dynamic Interactions in the Lightning App Builder - Salesforce Light ...
- Salesforce LWC学习(二十九) getRecordNotifyChange(LDS拓展增强篇)
本篇参考: https://developer.salesforce.com/docs/component-library/documentation/en/lwc/data_ui_api https ...
- Salesforce LWC学习(四十) datatable的dynamic action的小坑浅谈
本篇参考:https://developer.salesforce.com/docs/component-library/bundle/lightning-datatable/documentatio ...
- Salesforce LWC学习(三十) lwc superbadge项目实现
本篇参考:https://trailhead.salesforce.com/content/learn/superbadges/superbadge_lwc_specialist 我们做lwc的学习时 ...
- Salesforce LWC学习(三十六) Quick Action 支持选择 LWC了
本篇参考: https://developer.salesforce.com/docs/component-library/documentation/en/lwc/lwc.use_quick_act ...
- Salesforce LWC学习(二十六) 简单知识总结篇三
首先本篇感谢长源edward老哥的大力帮助. 背景:我们在前端开发的时候,经常会用到输入框,并且对这个输入框设置 required或者其他的验证,当不满足条件时使用自定义的UI或者使用标准的 inpu ...
- Salesforce LWC学习(三十五) 使用 REST API实现不写Apex的批量创建/更新数据
本篇参考: https://developer.salesforce.com/docs/atlas.en-us.224.0.api_rest.meta/api_rest/resources_compo ...
- Salesforce LWC学习(二十四) Array.sort 浅谈
本篇参考:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/sort sal ...
随机推荐
- Linux-解决jps查看正在运行的Java进程时显示:process information unavailable 问题
背景:jps全称为Java Virtual Machine Process Status Tool,是Java提供的一个查看当前用户有权访问的主机的Java进程情况的工具. 因为每一个Java程序都会 ...
- Power BI 7 DAY
DAX 表达式(Data Analysis Expressions) DAX表达式的结果应用在数据透视表中 DAX表达式的结果作用于整列或者表中所有行 还需注意以下几点: a. 表名用"'' ...
- 正则表达式(Regular Expression)详解
1 前言 正则表达式主要用于复杂文本处理,如模式匹配.格式检验.文本替换等.常用的通配符有: ^, $, *, ., , -, +, ?, &, |, (), [], {} 2 String中 ...
- 两台redhat7虚拟机配置ssh免密访问
说明 有时候为了方便搭建各种集群环境,需要配置多台虚拟机之间可以互相免密码访问.本文就介绍一下这个知识点,希望所帮助的朋友给老徐点个赞:) 两台虚拟机环境配置如下: 虚拟机1:192.168.56.1 ...
- Spring Boot学生信息管理系统项目实战-3.专业管理
1.获取源码 源码是捐赠方式获取,详细请QQ联系我 :) 2.实现效果 3.项目源码 只挑重点讲,详细请看源码. 专业管理实现学校专业的增删改查,与学院管理相关联. 前端代码 <!--编辑表单- ...
- powerdesigner自定义实体显示的属性
我做概要设计的时候需要画实体的逻辑模型图,默认的时候是这样的: 但是我想只保留属性名,隐藏数据类型和下面的横线怎么办?效果如下: 按以下操作即可实现:
- 阿里面试:Java开发中,应如何避免OOM
Java内存管理:避免OOM的10个实用小技巧 引言 在Java开发中,OutOfMemoryError(OOM)错误一直是令开发者头疼的问题,也是Java面试中出现核心频率很高的问题. 那么我们究竟 ...
- IDA 常用快捷键记录
常用快捷键1 1.切换文本视图与图表视图 空格键 2.返回上一个操作地址 ESC 3.搜索地址和符号 G 4.对符号进行重命名 N 5.常规注释 冒号键 6.可重复注释 分号键 7.添加标签 Alt+ ...
- Programming Abstractions in C阅读笔记:p293-p302
<Programming Abstractions in C>学习第73天,p293-p302总结,总计10页. 一.技术总结 1.时间复杂度 (1)quadratic time(二次时间 ...
- .Net 6 WebAPI 使用JWT进行 授权认证配置
.Net 6 WebAPI 使用JWT进行 授权认证 1.安装组件(Nuget) Microsoft.AspNetCore.Authentication.JwtBearer 2.Program.cs ...