index.jsx 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import React from 'react';
  2. import style from './index.less';
  3. import close from "../../images/close-icon.png";
  4. /**
  5. *小弹窗,没有蒙层,例如计算公式结果
  6. *title:弹窗标题
  7. *icon:标题旁边的icon,不传不显示
  8. *children:弹窗内容
  9. *show:弹窗显示
  10. *footer:是否显示底部“确定”按钮,默认不显示
  11. *confirmText:确认按钮文字
  12. *close:关闭弹窗事件
  13. *confirm:确定事件
  14. *使用时,父元素需要加相对定位position: relative;
  15. */
  16. class MiniToast extends React.Component{
  17. constructor(props){
  18. super(props);
  19. }
  20. close(){
  21. const {close} = this.props;
  22. close&&close();
  23. }
  24. confirm(){
  25. const {confirm} = this.props;
  26. confirm&&confirm();
  27. }
  28. render(){
  29. const {show,title,icon,children,footer,confirmText} = this.props;
  30. return <div className={style["infoBox"]} style={{display:show?'block':'none'}}>
  31. <p className={style["infoTitle"]}>
  32. {icon?<img src={icon} />:''}
  33. {title}
  34. <img src={close} onClick={this.close.bind(this)} className={style["closeIcon"]}/>
  35. </p>
  36. <div className={style["infoCon"]}>{children}</div>
  37. <div className={style["infoFoot"]} style={{display:footer?'block':'none'}}>
  38. <span onClick={this.confirm.bind(this)}>{confirmText?confirmText:'确定'}</span>
  39. </div>
  40. </div>
  41. }
  42. }
  43. export default MiniToast;