ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

antd Alert 自定义关闭:用 closeText 将关闭按钮替换为自定义文字

antd Alert 自定义关闭:用 closeText 将关闭按钮替换为自定义文字 antd Alert 自定义关闭用 closeText 将关闭按钮替换为自定义文字【免费下载链接】ant-designAn enterprise-class UI design language and React UI library项目地址: https://gitcode.com/gh_mirrors/antde/ant-design导读在 ant-designantd组件库中Alert警告提示组件默认以右上角的叉形Icon作为关闭按钮。本文基于仓库中的 close-text 演示文档 展开讲解如何通过closeText属性把默认关闭图标替换为自定义文字例如不再提醒并结合 Alert 源码 与 alert.less 样式 剖析其底层实现帮助你根据业务场景灵活定制警告提示的关闭交互。自定义关闭是什么Alert的默认关闭入口是一个叉形图标。而closeText允许开发者传入任意React.Node字符串、元素等作为关闭按钮的内容点击后依然走与默认关闭按钮完全一致的关闭逻辑只是视觉上从图标变成了文字。仓库中 close-text.md 给出的最简用法如下import { Alert } from antd; ReactDOM.render( Alert message消息提示的文案 typeinfo closeText不再提醒 / , mountNode);渲染效果为一条info类型的信息提示右侧不再显示叉形图标而是显示可点击的不再提醒文字点击后整条提示会以收起的动画关闭。使用前提不需要额外开启 closable在 antd 的 Alert API 中closable默认并不开启关闭按钮默认无。但当你传入closeText时无需再显式设置closable。这一行为在源码 index.jsx 中有明确体现// closeable when closeText is assigned if (closeText) { closable true; }也就是说只要closeText有值组件内部就会强制把closable置为true从而渲染出关闭入口。这与必须同时写closable才能出现关闭按钮的普通场景不同使用closeText时可以少写一个属性。渲染逻辑closeText 与默认图标的互斥在 render 方法 中关闭入口的渲染逻辑为{closable ? a onClick{this.handleClose} className{${prefixCls}-close-icon} {closeText || Icon typecross /} /a : null}可以看出当closeText存在时a标签内渲染的是closeText的内容当closeText不存在即只设了closable时才渲染Icon typecross /默认叉形图标无论哪种情况点击都触发同一个handleClose回调。因此closeText是替换而非追加默认关闭图标。若希望保留图标仅通过closable即可参见 closable 演示。点击关闭的底层行为handleCloseindex.jsx是关闭交互的核心handleClose(e) { e.preventDefault(); let dom ReactDOM.findDOMNode(this); dom.style.height ${dom.offsetHeight}px; // Magic code // 重复一次后才能正确设置 height dom.style.height ${dom.offsetHeight}px; this.setState({ closing: false }); this.props.onClose.call(this, e); }流程要点e.preventDefault()阻止a的默认跳转行为因为关闭入口本身是a元素通过findDOMNode拿到真实 DOM 节点把当前高度写入style.height作为收起动画的起始高度源码注释特意说明需要重复设置一次才能保证高度生效将closing状态置为false触发rc-animate的slide-up过渡动画index.jsx配合样式表中.ant-alert-close的高度归零、透明度和边距归零过渡alert.less完成收起调用用户传入的onClose回调便于业务侧在关闭时执行埋点等逻辑动画结束后由animationEnd将closed置为true组件整体返回null完成卸载。所以closeText文字与默认图标的唯一差异在视觉内容关闭行为、动画与回调完全一致。样式细节关闭文字的位置与观感针对closeTextalert.less 提供了专属样式-close-text { position: absolute; right: 16px; }而默认关闭图标则使用.ant-alert-close-icon的定位right: 16px、垂直居中alert.less。两者都固定在提示框右上角区域保证closeText文字与默认图标在视觉位置上保持一致不会被误认为正文内容。同时叉形图标默认色为legend-colorhover 时加深为#444alert.less若希望自定义文字也具备悬停反馈可在业务样式中对.ant-alert-close-text补充cursor: pointer与 hover 配色。对于带description的 Alert关闭入口会被定位到右上角.ant-alert-with-description .ant-alert-close-icontop 17pxcloseText同样适用此布局只是类名仍为ant-alert-close-text在扩展样式时需注意这一选择器差异。与 Alert 其他属性的组合使用closeText属于 Alert API 中的可选参数类型为React.Node无默认值。与之组合的常用属性如下参数说明类型默认值type指定警告提示样式可选success、info、warn、errorStringinfoclosable是否显示关闭按钮传入closeText时自动开启Boolean无closeText自定义关闭按钮内容替换默认关闭图标React.Node无message警告提示主内容React.Node无description警告提示的辅助性文字介绍React.Node无onClose关闭时触发的回调函数Function无showIcon是否显示辅助图标Booleanfalse实际开发中常见组合配合showIcon与description在不再提醒这种需要用户确认后关闭的场景中可同时展示类型图标和详细说明让关闭动作的语义更清晰参考 icon 演示配合onClose在用户点击不再提醒时记录行为避免后续再次打扰用户配合typewarn/typeerror用于需要强提示、且希望以文字引导用户操作如我知道了立即处理的高危场景。一个综合示例import { Alert } from antd; const onClose function (e) { console.log(e, 用户点击了不再提醒); }; ReactDOM.render( Alert message系统将于今晚 23:00 进行升级 description升级期间服务可能短暂不可用请提前保存工作内容 typewarn showIcon closeText不再提醒 onClose{onClose} / , mountNode);注意事项closeText为真值即会替换默认图标并自动开启关闭能力因此不必与closable同时书写closeText支持任意React.Node除纯文本外也可传入带图标的按钮或链接但需注意其外层本身就是a元素嵌套可点击元素可能引发事件与语义上的问题建议保持为纯文本或简单元素组件关闭后通过closed状态返回null不会再次渲染如需重新展示应由父组件重新挂载本文描述的行为基于当前仓库的 Alert 实现index.jsx、index.md演示代码运行于 antd 文档站示例环境mountNode由 demo 脚本 注入在实际项目中请使用自己页面的挂载节点。【免费下载链接】ant-designAn enterprise-class UI design language and React UI library项目地址: https://gitcode.com/gh_mirrors/antde/ant-design创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表