项目中经常会用到类似安卓的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相关推荐

  1. Qt 封装一个简单的LED(指示灯)控件

    Qt 封装一个简单的LED(指示灯)控件 1,效果~ 所以 这个简单的LED类可以自定义大小~ 可以点亮或熄灭,也可以闪烁

  2. 使用amaze ui的分页样式封装一个通用的JS分页控件

    作为一名码农,天天百度.偶尔谷歌,所有代码全靠copy,用第三方插件,偶尔也想着造造轮子,毕竟自己的骨肉总归比较亲. 今天有点空闲时间,想起我们公司之前套的页面的分页插件上还有bug,而写那个分页插件 ...

  3. 一个自定义的安卓验证码输入框控件、银行卡归属类型查询

    一个自定义的安卓验证码输入框控件.银行卡归属类型查询. GitHub:https://github.com/longer96/VerifyCode Dependency Gradle dependen ...

  4. 封装一个类似jquery的ajax方法

    //封装一个类似jquery的ajax方法,当传入参数,就可以发送ajax请求 //参数格式如下{// type:"get"/"post", // dataTy ...

  5. vue自定义插件 封装一个类似 element 中 message 消息提示框的插件

    vue自定义插件 封装一个类似 element 中 message 消息提示框的插件 一.资源文档 1.vue内置组件 transition 2.Vue.use() 3.Vue.extend() 4. ...

  6. Android_安卓为按钮控件绑定事件的五种方式

    写在最前面 本次,来介绍一下安卓中为控件--Button绑定事件的五种方式. 二.具体的实现 第一种:直接绑定在Button控件上: 步骤1.在Button控件上设置android:onClick=& ...

  7. 微信小程序手把手教你实现类似Android中ViewPager控件效果

    微信小程序手把手教你实现类似Android中ViewPager控件效果 前言 需求分析 头部TAB 滑动的内容部分 最终版本 尾巴 前言 在做Android开发的时候,ViewPager是开发者使用频 ...

  8. android如何绑定事件,Android_安卓为按钮控件绑定事件的五种方式

    一.写在最前面 本次,来介绍一下安卓中为控件--Button绑定事件的五种方式. 二.具体的实现 第一种:直接绑定在Button控件上: 步骤1.在Button控件上设置android:onClick ...

  9. ST_Curve --- 一个专业的曲线绘制控件

    一:什么是ST_Curve?   ST_Curve是一个专业的曲线绘制控件,只要是xy坐标系的曲线,都可绘制,纵坐标只能显示为值,横坐标可以显示为值或者时间(如果你愿意为控件提供插件,则坐标可显示任意 ...

最新文章

  1. 新看了两件家具请朋友们给点意见
  2. Java 方法重载 方法重写
  3. python插件做nagios发报警邮件二
  4. php编程习惯,PHP 编程的 5个良好习惯
  5. Log图文详解(Log.v,Log.d,Log.i,Log.w,Log.e)(转)
  6. 光端机的使用注意事项详解
  7. springboot获取当前服务ip_springboot(6)——整合日志
  8. YAM将于明日在DegenerativeFinance上发布uSTONKS
  9. 制作好的app需要服务器吗,在直播app制作过程中,服务器是如何配置的?
  10. JAVAWeb项目 微型商城项目-------(一)项目描述
  11. 乐源机器人没电提醒吗_云迹讲解机器人,你的专属机器人服务专家
  12. SQL删除重复数据只保留一条
  13. win10照片不能下一张的解决办法
  14. redis hscan用法
  15. 计算机技术在印刷中的应用,网络技术在印刷中的应用技巧
  16. 二元二次方程例题_二元二次方程组练习题及答案
  17. 蓝牙简单配对(Simple Pairing)协议及代码流程简述
  18. html页分割线最简单的实现方式
  19. win11(amd)+cuda+cudnn+pytorch安装过程
  20. patch 修补文件命令

热门文章

  1. POJ 1597 Function Run Fun
  2. 性能计数器与profiler的组合性能诊断
  3. 五分钟学会HTML5!(二)
  4. 多服务器session共享之memcache共享安装和实现篇(apache+php-windows)
  5. python关联分析代码_1行代码实现关联分析(Apriori)算法
  6. 安卓导航车机root方法_安卓手机设置充电提示音教程来了!教你三种方法,无需 ROOT!...
  7. wringPi 初始化GPIO 为上拉_你彻底弄清GPIO内部结构和各种模式了吗?
  8. Kali Linux 64位架构安装Veil-Evasion
  9. Xamarin Essentials教程实现数据的传输功能实例
  10. oracle 11g安装卸载,安装及卸载oracle 11g步骤