做出反应实现全局组件的烤轻提示效果
烤是常用的轻提示弹框,常用于页面装货和提示语弹窗。
本例基于反应实现一个随时可调用且不随页面渲染的全局组件。
需求分析
烤不需要同页面一起被渲染,而是根据需要被随时调用干杯是一个轻量级的提示组件,它的提示不会打断用户操作,并且会在提示的一段时间后自动关闭干杯需要提供几种不同的消息类型以适应不同的使用场景干杯的方法必须足够简洁,以避免不必要的代码冗余。如何使用
首先引入
从""导入干杯./components/toast'JSX中事件调用:
按钮onClick={()={ Toast.info('普通提示') }}普通提示/buttonJS中方法调用:
Toast.info('普通提示)回调方法:
const hideLoading=Toast.loading('加载中.',0,()={ Toast.success('加载完成)})setTimeout(hideLoading,2000)调用规则:
3个参数:
内容提示内容字符串(加载方法为可选)持续时间提示持续时间号码,单位ms(可选)onClose提示关闭时的回调函数(可选)Toast.info('普通,2000)Toast.success('成功,1000,()={ console.log('回调方法)}))Toast.error('错误)Toast.loading()代码实现
目录结构:
index.js:对外出口接口,设置默认的参数值,全局创建或销毁烤的DIV。祝酒词具体显示的内容及多次调用烤时的状态管理祝酒词的样式,费话不多说index.js:
从“反应”导入反应从“反应世界”导入干杯./toast“import ”./吐司。函数创建通知(){ const div=document。createelement(' div ')文档。尸体。appendchild(div)const notification=react DOM。render(Toast/,div)返回{ AddNotice(notice){ return notification。addnotification(notification)},destroy(){ react DOM。卸载组件节点(div)文档。尸体。removechild(div)} }让通知常量通知=(类型,内容,持续时间=2000,onClose)={ if(!通知)通知=创建通知()返回通知。add notification({ 0类型,内容,持续时间,onClose })}导出默认{信息(内容,持续时间,onClose){返回通知(' info ',内容,持续时间,onClose) },成功(内容='操作成功,持续时间,OnClose){ 0返回通知('成功,内容,持续时间,onClose) },错误(内容,持续时间,OnClose){ 0返回通知('错误,内容,持续时间,onClose) },加载(内容='加载中.',持续时间=0,OnClose){ 0返回通知(“正在加载”,内容,持续时间,onClose) }}toast.js:
导入做出反应,将{组件}从反应类扩展到stbox Component { constructor(){ super()。transitiontime=300 this。state={注意3360[]}这一点。移除通知=这个。删除通知。bind(this)} GetNotiKey(){ const { notifications }=this。状态返回通知-$ {新日期().getTime()}-$ { notations。length } ` } addNotice(notice){ const { notifications }=this。州政府通知。key=这个。getnoticekey()//notices。推送(通知);//展示所有的提示notice[0]=notice;//仅展示最后一个提示这个。setstate({ notice })if(notice。持续时间0){ setTimeout(()={ this。删除通知。键)},注意。duration)} return()={ this。删除通知。key)} }删除notice(key){ const { notice }=this。国家。setstate({ notice 3360 notifications。过滤器((注意)={ if(注意。key===key){ if(注意。onclose)setTimeout(注意。transitiontime)返回false }。烤面包{位置:固定;左3330;前3330名;z指数3: 999; flex显示器;灵活方向:列;}。吐司_bg {固定位置:宽度: 100%;高度: 100%;左3330;前3330名;}。吐司盒相对位置:左: 50%;前:名50%;宽度: 2.8雷姆;高度: 2雷姆;边际:-1雷姆-1.4雷姆; rgba背景(0,0,0,65);边界半径:1雷姆; #fff颜色;}。toast_text {绝对位置:底部336360 16%;文本对齐3330中心;宽度: 90%;利润: 0 5%;高度:28雷姆;溢出:隐藏;文本溢出:椭圆;空白: nowrap}。toast_icon {相对位置:左: 50%;前: 15%;边际:-4 rem;宽度:8雷姆;高度:8雷姆;}。toast_loading { -webkit动画:加载1s步骤(12,结束)无限;动画3330加载1s步(12,结束)无限;背景3330 URL('数据3330图像/png;-伊甸园字幕组=-翻译:粒粒粒尘紫月猫姐风景校对:粒尘紫月猫姐校对:粒尘紫月猫姐校对:粒尘紫月猫姐时间轴:粒尘紫月猫姐校对:粒尘紫月猫姐时间轴:粒尘紫月猫姐校对:粒尘紫月猫姐时间轴:粒尘紫月猫姐校对:粒尘紫月猫姐时间轴:粒尘月猫姐时间轴:粒尘月猫姐校对:粒尘月猫姐时间轴:粒尘月猫姐背景大小3: 100%;}。toast _ success {后台3330 URL(' data 3330 image/png);基地64号ivborw,0克格勃juaganda cajuagadaaammocha 1 bmveaad///////////////////////////////////////////////////////////////////////////////////////////////////////////背景大小3: 100%;}。toast _ error { background 3330 URL(' data 3330 image/png);-伊甸园字幕组=-翻译:粒粒粒尘紫月猫姐夏酷校对:阿衡时间轴:邦德猪校对:阿衡时间轴:邦德猪背景大小3: 100%;}。toast _ info {背景3330 URL('数据3330图像/png);-伊甸园字幕组=-翻译:粒粒粒尘紫月猫姐夏酷校对:阿衡时间轴:邦德猪校对:阿衡时间轴:邦德猪背景大小3: 100%;}@-webkit关键帧加载{ 0% {-WebKit-transform 3330旋转3d(0,0,1,0);转换3330旋转3d(0,0,1,0度);} 100% { -webkit转换3330旋转3d(0,0,1,360度);转换3330旋转3d(0,0,1,360度);} @关键帧加载{ 0% {-WebKit-transform 3330旋转3d(0,0,1,0);转换3330旋转3d(0,0,1,0度);} 100% { -webkit转换3330旋转3d(0,0,1,360度);转换3330旋转3d(0,0,1,360度);} }朱塞佩朱塞佩朱塞佩朱塞佩,阿云阿云娜阿云娜阿云娜阿云娜阿云娜阿云娜阿云娜阿云娜阿云娜阿云娜阿云娜阿云娜阿云娜阿云娜阿云娜阿云娜阿云娜阿云娜阿云娜,吴亚玲吴亚玲吴亚玲。
版权声明:做出反应实现全局组件的烤轻提示效果是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。