iView Notice通知关闭后还能再打开吗?

UX树鹤 阅读 21

用iView的Notice.info做提示框,点击按钮第一次显示正常,但关闭后再点按钮就没了,控制台也没报错,这是怎么回事?

代码是这样写的:Notice.info({ title: '提示', desc: '内容', duration: 0 }),尝试过把duration改成5,但问题依旧存在。

难道这个组件只能弹一次?或者需要手动销毁?有没有办法让每次点击都能重新弹出?

我来解答 赞 2 收藏
二维码
手机扫码查看
1 条解答
Des.玉军
这个问题的核心在于 Notice 的使用方式。iView 的 Notice 组件默认是单例模式,也就是说同一个通知实例只会显示一次,关闭后不会重新渲染。

要解决这个问题,可以优化成每次点击按钮时都创建一个新的通知实例,而不是复用之前的实例。具体实现上,把 Notice.info 的调用放在一个函数里,每次点击按钮时调用这个函数即可。

代码可以写成这样:
function showNotice() {
Notice.info({
title: '提示',
desc: '内容',
duration: 0
});
}

// 假设你有一个按钮来触发通知
document.querySelector('#yourButton').addEventListener('click', function() {
showNotice();
});


这里的关键点是每次点击按钮都会调用 showNotice 函数,从而生成一个新的通知实例。这样即使之前的通知被关闭了,新的通知依然能够正常弹出。

如果你觉得每次都写函数有点麻烦,还可以封装一个更通用的方法,比如传入标题和内容作为参数,进一步提升代码的复用性。像这样:
function createNotice(title, desc) {
Notice.info({
title: title,
desc: desc,
duration: 0
});
}

// 使用时
document.querySelector('#yourButton').addEventListener('click', function() {
createNotice('提示', '内容');
});


这样做不仅解决了问题,还让代码更加优雅和灵活。如果以后需要调整通知的样式或者行为,只需要改 createNotice 函数就可以了。

最后吐槽一句,这种单例模式的设计虽然有它的道理,但确实容易让人踩坑,尤其是文档里没特别强调的时候。希望我的解答能帮你少走点弯路。
点赞
2026-02-19 14:01