资讯专栏INFORMATION COLUMN

react封装一个类似安卓的toast控件message

褰辩话 / 3474人阅读

摘要:项目中经常会用到类似安卓的的控件。封装一个这样的组件是每个项目必须的事情。封装完成这样一个组件,具体使用方法如下使用方法第一步第二步需要的地方

项目中经常会用到类似安卓的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 (
      
{ this.state.data.map(item => { if (item.type == "success") { return
{item.msg}
; } return
{item.msg}
; }) }
); } } let instance; Message.newInstance = function () { if (instance) { return instance; } const div = document.createElement("div"); document.body.appendChild(div); const message = ReactDOM.render(, 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);

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/95582.html

相关文章

  • [Android] Toast问题深度剖析(二)

    摘要:所以,从体验上考虑,这个情况并不属于问题。一般情况下,这个节点占据了除了通知栏的所有区域。通知给对象的消息,都会被这个内部对象进行处理通过执行处理消息在通知给对象显示的时候,对象将给对象发送一条消息,并在的函数中执行。 欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 作者:QQ音乐技术团队 题记 Toast 作为 Android 系统中最常用的类之一,由于其方便的api设计和...

    cloud 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<