前端警告提示组件的实战经验与常见坑点分享

Good“殿洁 交互 阅读 2,756
赞 66 收藏
二维码
手机扫码查看
反馈

先看效果,再看代码

最近在项目里折腾警告提示,发现这玩意儿虽然简单,但用起来还是有不少坑。今天就来聊聊我在这个过程中的经验和教训。

前端警告提示组件的实战经验与常见坑点分享

基础的警告提示:亲测有效

最简单的警告提示就是弹出一个模态框,显示一些信息。这个可以用原生的alert实现,但那样太丑了,推荐使用第三方库比如sweetalert2

首先,你需要安装sweetalert2

npm install sweetalert2

然后在你的项目里引入它:

import Swal from 'sweetalert2';

接着,你可以这样使用:

Swal.fire({
  title: '警告',
  text: '这是一个警告提示',
  icon: 'warning',
  confirmButtonText: '确定'
});

这段代码会弹出一个带标题、文本和“确定”按钮的警告提示框。很简单吧?

踩坑提醒:这三点一定注意

虽然上面的代码看起来很简单,但实际使用中还是有很多需要注意的地方。

1. 异步问题

很多时候我们需要在用户点击“确定”后执行某些操作,这时候就需要处理异步问题。比如:

Swal.fire({
  title: '警告',
  text: '你确定要删除吗?',
  icon: 'warning',
  showCancelButton: true,
  confirmButtonColor: '#3085d6',
  cancelButtonColor: '#d33',
  confirmButtonText: '确定',
  cancelButtonText: '取消'
}).then((result) => {
  if (result.isConfirmed) {
    // 用户点击了“确定”,这里可以执行删除操作
    fetch('https://jztheme.com/api/delete', { method: 'DELETE' })
      .then(response => response.json())
      .then(data => {
        console.log(data);
        // 显示删除成功的提示
        Swal.fire(
          '删除成功',
          '数据已成功删除',
          'success'
        );
      });
  }
});

这段代码中,我们在用户点击“确定”后发送一个删除请求,并在成功后显示一个成功的提示。一定要记得用.then处理异步操作。

2. 样式问题

sweetalert2自带了一些样式,但有时候你可能需要自定义样式。可以通过传递CSS类名来实现:

Swal.fire({
  title: '警告',
  text: '这是一个警告提示',
  icon: 'warning',
  confirmButtonText: '确定',
  customClass: {
    container: 'my-swal-container',
    title: 'my-swal-title',
    content: 'my-swal-content',
    confirmButton: 'my-swal-confirm-button',
    cancelButton: 'my-swal-cancel-button'
  }
});

然后在你的CSS文件里定义这些类名:

.my-swal-container {
  background-color: #f8d7da;
}

.my-swal-title {
  color: #721c24;
}

.my-swal-content {
  color: #721c24;
}

.my-swal-confirm-button {
  background-color: #dc3545;
  border-color: #dc3545;
}

.my-swal-cancel-button {
  background-color: #6c757d;
  border-color: #6c757d;
}

这样你就可以根据自己的需求自定义警告提示的样式了。

3. 多语言支持

如果你的项目需要支持多语言,sweetalert2也提供了相应的方法。可以通过设置i18n参数来实现:

Swal.fire({
  title: '警告',
  text: '这是一个警告提示',
  icon: 'warning',
  confirmButtonText: '确定',
  i18n: {
    confirmButtonText: '确定',
    cancelButtonText: '取消'
  },
  customClass: {
    container: 'my-swal-container',
    title: 'my-swal-title',
    content: 'my-swal-content',
    confirmButton: 'my-swal-confirm-button',
    cancelButton: 'my-swal-cancel-button'
  }
});

这样你就可以根据用户的语言设置来显示不同的文字了。

高级技巧:动态内容加载

有时候我们需要在警告提示中显示动态内容,比如从服务器获取的数据。这时候可以用html参数来实现:

fetch('https://jztheme.com/api/data')
  .then(response => response.json())
  .then(data => {
    const dataHTML = 
      
名称: ${data.name}
描述: ${data.description}
; Swal.fire({ title: '数据详情', html: dataHTML, icon: 'info', confirmButtonText: '关闭' }); });

这段代码会从服务器获取数据,并在警告提示中显示这些数据。用html参数可以插入任意HTML内容,非常灵活。

结尾:继续探索

以上是我对警告提示的一些使用经验和踩坑点总结,希望能对你有所帮助。警告提示虽然简单,但用好它还是需要一些技巧的。后续我会继续分享更多关于前端开发的经验,如果有更好的实现方式或者遇到其他问题,欢迎在评论区交流。

希望这篇博客能让你少走弯路,加油!

本文章不代表JZTHEME立场,仅为作者个人观点 / 研究心得 / 经验分享,旨在交流探讨,供读者参考。
发表评论

暂无评论