iView Notice通知关闭后还能再打开吗? UX树鹤 提问于 2026-02-19 13:27:25 阅读 21 组件 用iView的Notice.info做提示框,点击按钮第一次显示正常,但关闭后再点按钮就没了,控制台也没报错,这是怎么回事? 代码是这样写的:Notice.info({ title: '提示', desc: '内容', duration: 0 }),尝试过把duration改成5,但问题依旧存在。 难道这个组件只能弹一次?或者需要手动销毁?有没有办法让每次点击都能重新弹出? Notice通知 我来解答 赞 2 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 1 条解答 Des.玉军 Lv1 这个问题的核心在于 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 加载更多 相关推荐
Notice的使用方式。iView 的Notice组件默认是单例模式,也就是说同一个通知实例只会显示一次,关闭后不会重新渲染。要解决这个问题,可以优化成每次点击按钮时都创建一个新的通知实例,而不是复用之前的实例。具体实现上,把
Notice.info的调用放在一个函数里,每次点击按钮时调用这个函数即可。代码可以写成这样:
这里的关键点是每次点击按钮都会调用
showNotice函数,从而生成一个新的通知实例。这样即使之前的通知被关闭了,新的通知依然能够正常弹出。如果你觉得每次都写函数有点麻烦,还可以封装一个更通用的方法,比如传入标题和内容作为参数,进一步提升代码的复用性。像这样:
这样做不仅解决了问题,还让代码更加优雅和灵活。如果以后需要调整通知的样式或者行为,只需要改
createNotice函数就可以了。最后吐槽一句,这种单例模式的设计虽然有它的道理,但确实容易让人踩坑,尤其是文档里没特别强调的时候。希望我的解答能帮你少走点弯路。