Notification Modals — Alert, Confirm & Prompt

DEX475 - Open Modal Windows and Notifications

📄 第 369 页 🎬 视频课程

课程章节介绍

好,咱们来看这页内容,讲的是 LWC 里怎么代替那些已经废弃的浏览器弹窗。 以前咱们可能习惯用 window.alert、window.confirm 或者 window.prompt 来弹个提示、确认框什么的。但现在在 Lightning Web Components 里,这些都不能再用了。为什么呢?因为在现代浏览器的安全策略下,跨源的 iframe 环境会直接把这些原生弹窗给屏蔽掉,而 Salesforce 恰恰跑在 iframe 里,所以你调用它们压根不会生效。那怎么办?放心,LWC 给我们准备了三个专门的替代模块。 第一个叫 LightningAlert。它就相当于过去的 alert,用来显示一条紧急消息。不同的是,它有一个可配置的主题,比如你设置成 error,标题栏就会变成猩红色,特别显眼。同时你还可以通过标签属性设置标题文本。要使用它,需要先从 lightning/alert 模块导入,然后调用它的 .open() 方法。这个方法会返回一个 Promise。 第二个是 LightningConfirm,它替代 confirm,让用户确认操作。返回的结果是 true 表示点了确定,false 表示点了取消。它还有个很方便的无标题变体,可以把标题栏直接隐藏掉,界面更简洁。 第三个叫 LightningPrompt,对应 prompt,用来让用户输入文本。如果用户点了确定,就返回输入的字符串;如果取消,返回空字符串。你还可以给它一个可选的 defaultValue,提前把输入框填好。 这几个模块有个特别需要留意的地方:它们和原生函数的最大区别就是,不阻塞 JavaScript 的执行。原生 alert 一弹,整个页面就卡住了,直到你点掉才继续往下走。但 LightningAlert 这些是异步的,调用 .open() 后代码会立刻往下跑。如果你需要等弹窗关闭后再做一些事情,千万不能直接把逻辑写在后面,而是要用 async/await,或者用 .then() 链式调用来处理。这样才能确切地在用户响应后拿到结果并执行后续代码。 总之记住,在 LWC 开发中,任何需要提示、确认、输入的场景,都要用这三个模块来代替老旧的 window 弹窗,它们不仅解决了跨源限制问题,还更符合组件化的异步流程。

关键词

LWC Lightning Web Components Salesforce