react封装一个类似安卓的toast控件message
项目中经常会用到类似安卓的toast的控件。封装一个这样的组件是每个项目必须的事情。
import React from 'react';
import ReactDOM from 'react-dom';let seed = 0;
const now = Date.now();
function getUuid() {return `rcNotification_${now}_${seed++}`;
}class Message extends React.Component {constructor(props) {super(props);this.state = {data: []};this.add = this.add.bind(this);this.remove = this.remove.bind(this);}add(notice) {console.log('msg123', 'add');this.setState({data: [...this.state.data, notice]});const that = this;setTimeout((() => that.remove(notice.key)), 2000);}remove(key) {console.log('msg123', 'remove');const temp = this.state.data.filter(item => {const result = item.key != key;return result;});this.setState({data: [...temp]});}render() {console.log('msg123', this.state.data);return (<div style={{zIndex: 99999, position: 'fixed'}}>{this.state.data.map(item => {if (item.type == 'success') {return <div className="lcx_hint" key={item.key} style={{position: 'fixed'}}>{item.msg}</div>;}return <div className="lcx_hint2" key={item.key} style={{position: 'fixed'}}>{item.msg}</div>;})}</div>);}
}let instance;
Message.newInstance = function () {if (instance) {return instance;}const div = document.createElement('div');document.body.appendChild(div);const message = ReactDOM.render(<Message />, div);console.log('msg123', 'newInstance');instance = {success(msg) {console.log('msg123', 'success');message.add({type: 'success', msg, key: getUuid()});},warning(msg) {console.log('msg123', 'warning');message.add({type: 'warning', msg, key: getUuid()});},component: message,};return instance;
};export default Message;
封装完成这样一个组件,具体使用方法如下:
使用方法:
第一步:
componentWillMount() {this.message = Message.newInstance();}
第二步需要的地方
this.message.success('xxx');this.message.warning('xxx);
react封装一个类似安卓的toast控件message相关推荐
- Qt 封装一个简单的LED(指示灯)控件
Qt 封装一个简单的LED(指示灯)控件 1,效果~ 所以 这个简单的LED类可以自定义大小~ 可以点亮或熄灭,也可以闪烁
- 使用amaze ui的分页样式封装一个通用的JS分页控件
作为一名码农,天天百度.偶尔谷歌,所有代码全靠copy,用第三方插件,偶尔也想着造造轮子,毕竟自己的骨肉总归比较亲. 今天有点空闲时间,想起我们公司之前套的页面的分页插件上还有bug,而写那个分页插件 ...
- 一个自定义的安卓验证码输入框控件、银行卡归属类型查询
一个自定义的安卓验证码输入框控件.银行卡归属类型查询. GitHub:https://github.com/longer96/VerifyCode Dependency Gradle dependen ...
- 封装一个类似jquery的ajax方法
//封装一个类似jquery的ajax方法,当传入参数,就可以发送ajax请求 //参数格式如下{// type:"get"/"post", // dataTy ...
- vue自定义插件 封装一个类似 element 中 message 消息提示框的插件
vue自定义插件 封装一个类似 element 中 message 消息提示框的插件 一.资源文档 1.vue内置组件 transition 2.Vue.use() 3.Vue.extend() 4. ...
- Android_安卓为按钮控件绑定事件的五种方式
写在最前面 本次,来介绍一下安卓中为控件--Button绑定事件的五种方式. 二.具体的实现 第一种:直接绑定在Button控件上: 步骤1.在Button控件上设置android:onClick=& ...
- 微信小程序手把手教你实现类似Android中ViewPager控件效果
微信小程序手把手教你实现类似Android中ViewPager控件效果 前言 需求分析 头部TAB 滑动的内容部分 最终版本 尾巴 前言 在做Android开发的时候,ViewPager是开发者使用频 ...
- android如何绑定事件,Android_安卓为按钮控件绑定事件的五种方式
一.写在最前面 本次,来介绍一下安卓中为控件--Button绑定事件的五种方式. 二.具体的实现 第一种:直接绑定在Button控件上: 步骤1.在Button控件上设置android:onClick ...
- ST_Curve --- 一个专业的曲线绘制控件
一:什么是ST_Curve? ST_Curve是一个专业的曲线绘制控件,只要是xy坐标系的曲线,都可绘制,纵坐标只能显示为值,横坐标可以显示为值或者时间(如果你愿意为控件提供插件,则坐标可显示任意 ...
最新文章
- 新看了两件家具请朋友们给点意见
- Java 方法重载 方法重写
- python插件做nagios发报警邮件二
- php编程习惯,PHP 编程的 5个良好习惯
- Log图文详解(Log.v,Log.d,Log.i,Log.w,Log.e)(转)
- 光端机的使用注意事项详解
- springboot获取当前服务ip_springboot(6)——整合日志
- YAM将于明日在DegenerativeFinance上发布uSTONKS
- 制作好的app需要服务器吗,在直播app制作过程中,服务器是如何配置的?
- JAVAWeb项目 微型商城项目-------(一)项目描述
- 乐源机器人没电提醒吗_云迹讲解机器人,你的专属机器人服务专家
- SQL删除重复数据只保留一条
- win10照片不能下一张的解决办法
- redis hscan用法
- 计算机技术在印刷中的应用,网络技术在印刷中的应用技巧
- 二元二次方程例题_二元二次方程组练习题及答案
- 蓝牙简单配对(Simple Pairing)协议及代码流程简述
- html页分割线最简单的实现方式
- win11(amd)+cuda+cudnn+pytorch安装过程
- patch 修补文件命令
热门文章
- POJ 1597 Function Run Fun
- 性能计数器与profiler的组合性能诊断
- 五分钟学会HTML5!(二)
- 多服务器session共享之memcache共享安装和实现篇(apache+php-windows)
- python关联分析代码_1行代码实现关联分析(Apriori)算法
- 安卓导航车机root方法_安卓手机设置充电提示音教程来了!教你三种方法,无需 ROOT!...
- wringPi 初始化GPIO 为上拉_你彻底弄清GPIO内部结构和各种模式了吗?
- Kali Linux 64位架构安装Veil-Evasion
- Xamarin Essentials教程实现数据的传输功能实例
- oracle 11g安装卸载,安装及卸载oracle 11g步骤