javascript - 如何处理 LWC 组件中未保存的更改?
问题描述
我正在尝试在 LWC 组件中实现未保存的更改功能。尝试了各种方法,包括使用 javascript 和 jquery 并尝试在 onbeforeunload 上触发它,但事情似乎不起作用。在 HTML 页面上也是如此,但在 LWC 中却不如预期。
我尝试在 util 类中使用以下代码:
const handleUnsavedChangesValidation = (hasModifiedData, updateClicked) => {
console.log('>>>:::INN::hasModifiedData::', hasModifiedData);
console.log('>>>:::INN::updateClicked::', updateClicked);
var modified = hasModifiedData && !updateClicked ? true : false;
if(modified) {
addEventListener("beforeunload", (evt) => {
const unsaved_changes_warning = "Changes you made may not be saved.";
evt.returnValue = unsaved_changes_warning;
return unsaved_changes_warning;
});
}
else
{
removeEventListener("beforeunload", () => {
return true;
});
}
}
在对输入字段进行任何更改时,我尝试使用这些参数调用以下方法:handleUnsavedChangesValidation(true, false)
单击保存按钮时,我尝试调用此 handleUnsavedChangesValidation(true, true);
在尝试上述方法时,它部分工作正常:
加载时 -> 不显示警报(如预期的那样)
输入更新 -> 如果按下刷新(警报显示 - 预期)
在输入更新时 -> 如果单击选项卡被按下(警报显示 - 预期)
在输入更新时 -> 如果单击浏览器后退按钮(它无法显示警报)
在输入更新时 - > 如果单击更新按钮(它仍然显示警告,说明未保存的更改,然后单击确定它会保存。这也不是预期的。此处不应显示警告)
保存后 -> 页面刷新 -> 现在会显示警报,这也是意料之外的。
如果我再次单击刷新,它不会显示警报。
我被循环并尝试通过静态资源和其他方式找到许多方法来处理这个问题,但在这里无法做任何事情。试图将空白传递给卸载的返回值但没有结果。尝试传递 return true 以及 return false。然而,当我们点击保存时,它似乎会显示一个警报。
任何人都知道任何替代方案,或者有人可以在这里帮助我。我正在寻找一种适用于 LWC 实现而不仅仅是 html javascript 的解决方案。
请帮助极客。非常感谢任何帮助。
提前谢谢,注意安全。
问候, 拉杰什
解决方案
推荐阅读
- python - 在请求标头中设置模拟位置
- r - 添加 tabItem 后,我闪亮的应用程序不会呈现任何内容
- windows - Opencv安装代码块
- python - 如何使用 python 中的 REST API 以发货状态获取 shopify 中的所有订单?
- python - 如何在 Python 中的字典中添加相似的键及其值?
- amazon-web-services - AWS Cloudfront 突然停止为静态 S3 网站工作
- android-music-player - 音乐播放器应用程序无法在 android 10 上运行
- docker - 如何在 docker-compose.yml 文件中使用的 github 操作中读取环境变量?
- javascript - Javascript (Vanilla) element.checked = true/false 不起作用
- c++ - 何时使用#define 与 typedef?