本篇参考:

https://developer.salesforce.com/blogs/2022/01/preparing-your-components-for-the-removal-of-alert-confirm-prompt

https://help.salesforce.com/s/articleView?id=release-notes.rn_lc_alert_confirm_prompt.htm&type=5&release=238

https://developer.salesforce.com/docs/component-library/bundle/lightning-alert/documentation

https://developer.salesforce.com/docs/component-library/bundle/lightning-confirm/documentation

我们在项目中可能会用到 alert 或者 confirm方法来实现一些交互性效果。
比如不满足指定的条件,我们需要alert提供一些文字来告诉用户当前数据问题,引导用户正确操作。当我们对数据删除或者对敏感信息修改时,可能需要弹出一个 confirm来实现强调效果。

当然,上述内容可以通过 toast或者 modal方式来实现,如果在项目中最开始使用了这些最好,但是既有的代码就是存在使用了 alert / confirm / prompt的js方法了,很不幸的是,我们最好要替换掉这些方法避免不必要的问题。
https://github.com/whatwg/html/issues/5407 通过这个链接可以看到js的提案为不允许跨源iframes使用window的 alert / confirm / prompt.

当然这里有一个前提,就是 cross-origin,也就是说你的代码里面尽管使用了这些,但是可能还可以正常运行,因为你没有cross-origin。目前谷歌以及safari的一些版本已经不再支持,所以为了避免后续不必要的问题,salesforce推荐我们迁移至安全的封装好的组件上。当然实际的UI会有一些区别,替换以前建议给客户做demo看一下效果。官方针对 classic场景以及aura / lwc都已经介绍了解决方案。这里啰嗦一下 lwc这里的alert的一个实现。

Lwc中使用 async/await 或者 .then()的方式来执行,而且这个组件可以在任何方法体内调用。官方demo中使用的 async方式, demo中补一下 Promise方式。Promise的then是在弹出的modal点击OK以后调用的,所以如果方法中不需要针对OK以后执行什么操作,则可以使用 async / await方式,否则使用 .then,比如之前有 loading的spinner,当报错展示 alert以后,需要将 spinner隐藏即可使用 Promise方式。

myApp.html

<template>
<lightning-button onclick={handleAlertClick} label="Open Alert Modal">
</lightning-button>
<template if:true={showSpinner}>
<lightning-spinner alternative-text="loading...">
</lightning-spinner>
</template>
</template>

myApp.js

import { LightningElement } from 'lwc';
import LightningAlert from 'lightning/alert'; export default class MyApp extends LightningElement { showSpinner = false; // async handleAlertClick() {
// await LightningAlert.open({
// message: 'this is the alert message',
// theme: 'error', // a red theme intended for error states
// label: 'Error!', // this is the header text
// });
// //Alert has been closed
// } handleAlertClick() {
/*
theme available options
default: white
shade: gray
inverse: dark blue
alt-inverse: darker blue
success: green
info: gray-ish blue
warning: yellow
error: red
offline: ​black
*/
this.showSpinner = true;
LightningAlert.open({
message: 'this is the alert message',
theme: 'error', // a red theme intended for error states
label: 'Error!', // this is the header text
variant: "header"
}).then((result) => {
//当点击OK按钮以后的调用内容
console.log('execute')
this.showSpinner = false;
});
}
}

显示效果

总结:篇中只是针对这个功能简单demo,详情可以查看上方的文档。篇中有错误欢迎指出,有不懂欢迎留言。

salesforce零基础学习(一百二十)快去迁移你的代码中的 Alert / Confirm 以及 Prompt吧的更多相关文章

  1. salesforce 零基础学习(二十二)Test简单使用

    本篇内容只是本人简单的mark开发中常出现的一些疑问,方便后期项目使用时奠定基础,如果对Test零基础童鞋,欢迎查看Test官方的使用介绍: https://help.salesforce.com/a ...

  2. salesforce 零基础学习(二十八)使用ajax方式实现联动

    之前的一篇介绍过关于salesforce手动配置关联关系实现PickList的联动效果,但是现实的开发中,很多数据不是定死的,应该通过ajax来动态获取,本篇讲述通过JavaScript Remoti ...

  3. salesforce 零基础学习(二十四)解析csv格式内容

    salesforce中支持对csv格式的内容批量导入,可以使用dataloader,然而有些情况下,当用户没有相关权限使用dataloader导入情况下,就的需要使用VF和apex代码来搞定. 基本想 ...

  4. salesforce 零基础学习(二十)简单APP制作

    本篇参考链接:https://developer.salesforce.com/trailhead/project/salesforce_developer_workshop 本篇讲述的是最简单的AP ...

  5. salesforce 零基础学习(二十九)Record Types简单介绍

    在项目中我们可能会遇见这种情况,不同的Profile拥有不同的页面,页面中的PickList标签可能显示不同的值.这个时候,使用Record Types可以很便捷的搞定需求. Record Types ...

  6. salesforce 零基础学习(二十六)自定义图表chart简单介绍(使用apex和VF实现)

    chart在报表中经常使用到,他可以使报表结果更加直观的展现给用户.salesforce支持VF和apex代码来更好的展示chart. chart分类:常用的图表样式有饼状图,柱状图,折线图,条形图, ...

  7. salesforce 零基础学习(二十五)PickList简单联动操作

    有的时候,项目需要一些联动的操作,比如省和市之间的联动,不同的省应该显示不同的城市. 操作步骤如下: 1.新建provice字段,并且初始化相关的值 2.新建city字段,并且初始化相关的值 3.在P ...

  8. salesforce 零基础学习(四十六)动态美观显示列表中记录的审批状态

    项目中,申请者申请某些事项以后,常常需要在申请列表中查看当前申请的记录所在的审批状态,动态美观的显示状态可以使UI更符合客户要求,比如下面这样. 以Goods__c表为例,申请者申请的一些采购以前需要 ...

  9. salesforce零基础学习(八十九)使用 input type=file 以及RemoteAction方式上传附件

    在classic环境中,salesforce提供了<apex:inputFile>标签用来实现附件的上传以及内容获取.salesforce 零基础学习(二十四)解析csv格式内容中有类似的 ...

随机推荐

  1. C++ 遍历磁盘文件 非递归方法 和递归方法

    1: 非递归方法:  一起学习 寻找快乐 // File Name: CSearch.h #pragma once #include <vector> #include <atlst ...

  2. GreatSQL vs MySQL性能测试来了,速围观~

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. GreatSQL是MySQL的国产分支版本,使用上与MySQL一致. 1.结论先行 无论ibp(innodb_buffer ...

  3. C#,根据路径获取某个数字开头的所有文件夹,并获取最新文件夹进行替换文件

    项目需求获取某路径下为1开头文件夹,并替换最新文件夹内容,话不多说,上代码 private void Form1_Load(object sender, EventArgs e) { try { st ...

  4. 命令行配置Windows高级防火墙

    今天正好看到个帖子,询问如何通过命令行配置防火墙策略中远程IP的地址,特别是添加新的地址. 就是图中Scope里Remote IP address的地址. 第一反应就是用netsh firewall来 ...

  5. 《网页设计基础——CSS的四种引入方式详解》

    网页设计基础--CSS的四种引入方式详解     一.行内式:   规则: 1. 行内式是所有样式方法中最为直接的一种,它直接对HTML的标记使用style属性,然后将CSS代码直接写在其中.   格 ...

  6. 微服务低代码Serverless平台(星链)的应用实践

    导读 星链是京东科技消金基础研发部研发的一款研发效能提升的工具平台,面向后端服务研发需求,尤其是集成性.场景化.定制化等难度不太高.但比较繁琐的需求,如服务前端的后端(BFF).服务流程编排.异步消息 ...

  7. Ubuntu 系统服务器初始化配置、安全加固、内核优化和常用软件安装的Shell脚本分享

    转载自:https://www.bilibili.com/read/cv13875402?spm_id_from=333.999.0.0 描述: 适用于企业内部 Ubuntu 操作服务器初始化.系统安 ...

  8. 在 Linux 上为特定的用户或用户组启用或禁用 SSH

    由于你的公司标准规定,你可能只能允许部分人访问 Linux 系统.或者你可能只能够允许几个用户组中的用户访问 Linux 系统.那么如何实现这样的要求呢?最好的方法是什么呢?如何使用一个简单的方法去实 ...

  9. Nexus OSS 3 搭建并配置使用 Docker & Git LFS 仓库

    转载自:https://cloud.tencent.com/developer/article/1010590 1.Nexus OSS 3 介绍 我们知道 Nexus 是一个强大的 Maven 仓库管 ...

  10. Codeforces Round #822 (Div. 2) A-F

    比赛链接 A 题解 知识点:贪心. 注意到任意三根木棍的相等最优解是最长减最小,因此从小到大排序,三个三个取,取最小值. 时间复杂度 \(O(n\log n)\) 空间复杂度 \(O(n)\) 代码 ...