以上demo,完整案例请下载:example-MyconfirmDialog

或者访问github地址:https://github.com/Kybs0/Kybs0HtmlCssJsDemo/tree/master/definedAlertWindow

自定义动态确认框

假如一个页面有多个业务需要确认框,上面的确认框就显得代码冗余了。

下面提供一个确认框的组件:

1. 定义弹出框的组件

安装动画过渡组件 ReactCSSTransitionGroup  -- yarn add ReactCSSTransitionGroup

ReactCSSTransitionGroup可以在切换界面时,有一个过渡的视觉效果。

在ReactCSSTransitionGroup内部添加弹框内容:提示文本、确认按钮、取消按钮。

创建一个div容器,并将组件添加到容器中。

默认为提示框。如果传入取消按钮的文本,则为确认/取消框。

代码与前端 自定义弹出框-提示框类似:

1 import React, { Component } from 'react';

import { is, fromJS } from 'immutable';

import ReactDOM from 'react-dom';

import ReactCSSTransitionGroup from 'react-addons-css-transition-group';

import './style.less';

let defaultState = {

alertStatus: false,

alertContent: '确认/提示',

cancelButtonContent: null,

okButtonContent: '确认',

//关闭弹窗,closeType:1-确认,0-取消

closeAlert: function (closeType) { }

};

class AlertComponent extends Component {

state = {

...defaultState,

};

FirstChild = (props) => {

const childrenArray = React.Children.toArray(props.children);

return childrenArray[0] || null;

};

open = (options) => {

options = options || {};

options.alertStatus = true;

this.setState({

...defaultState,

...options,

});

};

// 确认

confirm = () => {

this.setState({

alertStatus: false,

});

this.state.closeAlert(1);

};

// 取消

cancel = () => {

this.state.closeAlert(0);

this.setState({

alertStatus: false,

});

};

shouldComponentUpdate(nextProps, nextState) {

return !is(fromJS(this.props), fromJS(nextProps)) || !is(fromJS(this.state), fromJS(nextState));

}

render() {

return (

{this.state.alertContent}

style={this.state.cancelButtonContent==null||this.state.cancelButtonContent=='' ? { display: 'none' } : { display: 'block' }}>

{this.state.cancelButtonContent}

{this.state.okButtonContent}

);

}

}

let div = document.createElement('div');

let props = {};

document.body.appendChild(div);

let AlertBox = ReactDOM.render(React.createElement(AlertComponent, props), div);

export default AlertBox; View Code

2. 添加样式

1 .alert-container {

position : fixed;

top : 0;

left : 0;

width : 100%;

height : 100%;

background: rgba(0, 0, 0, 0.3);

z-index : 11;

}

.alert-container .body {

width : 480px;

background : #fff;

border-radius : 6px;

border : 1px solid #ccc;

text-align : center;

position : absolute;

top : 50%;

left : 50%;

transform : translate(-50%, -50%);

display : flex;

flex-direction: column;

align-items : center;

}

.alert-container .body .content {

align-self : center;

height : 200px;

line-height: 200px;

font-size : 20px;

color : #464646;

width : auto;

}

.alert-container .body .btns {

width : 480px;

height : 60px;

line-height : 61px;

display : flex;

flex-direction : row;

align-items : center;

justify-content: center;

border-width : 1px 0 0 0;

border-color : #EEEEEE;

border-style : solid;

}

.alert-container .body .btns a {

background : inherit;

color : #2CBA5B;

font-size : 20px;

display : inline-block;

cursor : pointer;

text-decoration: none;

width : 240px;

line-height : 60px;

height : 60px;

}

.alert-container .body .btns a.btn-cancel {

color : #666666;

border-width: 0 1px 0 0;

border-color: #EEEEEE;

border-style: solid;

} View Code

3. 提示框调用

直接复制上面的前端代码即可,在本地定义组件。

具体的使用可见下面的案例,删除版本操作时,弹出确认框,确认后执行相关的操作。

确认code为1,取消code为0。

在open函数中,传入提示文本、关闭确认框后的函数。

1 //删除版本

deleteVersion = record => {

const extensionId=this.state.extensionId;

AlertComponent.open({

alertContent: `确认要删除版本${record.version}?`,

cancelButtonContent: '取消',

closeAlert: function (closeType) {

if (closeType == 1) {

ExtensionSingle.deleteVersion({ extensionId: extensionId, version: record.version }).then(result => {

window.location.reload();

});

}

}

});

};

效果图:

html输入提示框点击确认显示内容,前端 自定义确认提示框(二)相关推荐

  1. php按钮如何加显示不出来,javascript - 点击按钮 显示更多,自定义变量显示不出来?...

    点击按钮 显示更多,自定义变量显示不出来? 提示错误信息:. 想要达到的效果: 点击按键一次更多,多显示3条信息 显示更多 支持 小明1这是我的个性签名 288个赞同 本回答分成[旅游版]和[日常版] ...

  2. jquery实现点击标题显示内容,同级其他元素内容隐藏

    最终呈现效果: jquery实现点击标题显示内容,同级其他元素内容隐藏视频 核心代码块: //点击标题元素('历史上的今天')$(document).on('click','.item',functi ...

  3. layui 下拉框空选项不显示_layui下select下拉框不显示或没有效果

    Layui会对select.checkbox.radio等原始元素隐藏,从而进行美化修饰处理.但这需要依赖于form组件,所以你必须加载 form,并且执行一个实例.值得注意的是:导航的Hover效果 ...

  4. 【前端积累】点击切换显示内容

    1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="U ...

  5. Qt总结:QMessageBox(原生态弹出框及究极超nice封装自定义弹出框)

    一.前言 在Qt中经常需要弹出窗口,QMessageBox可以实现此功能,一共有三种窗口,information, question, 和 warning,critical, about分别对应感叹号 ...

  6. 密码框点击眼睛显示隐藏

    输入框input变成密码框只需要简简单单的添加一个type="password"就好了 <input type="password" id="i ...

  7. vue-element日期框点击不显示,不刷新

    添加blur事件,手动强制刷新 <el-date-picker @blur="changeTime" v-model="form.time" type=& ...

  8. 解决win10下PPT打不开,显示内容有问题,提示修复但修复不成功

    先说一下问题: 下了几个PPT,有几章打得开,有几章打不开,有的电脑能打开,但是不管是压缩解压缩还是重新下载,还是从别人电脑上拷过来,双击打开都显示这个,说明问题还是在PPT本身. 点击修复后: 网上 ...

  9. c语言程序一运行就显示,为什么一运行这个读取并显示内容的程序就提示程序错误?...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 请各位朋友帮忙看一看,这是什么原因造成的,一直没有解决这个问题. 平台:CFREE 生成文件的程序代码如下: #include #include" ...

最新文章

  1. thrift的中文编码处理
  2. 使用commandfield删除、修改gridview
  3. tf.device()指定tensorflow运行的GPU或CPU设备
  4. vs2012+wdk8.0 搭建wdf驱动开发环境
  5. C语言实现三种死循环
  6. 三国群英传服务器端架设修改,三国群英传OL单机架设视频教程
  7. 2011端午节搞笑短信大全
  8. C语言if的所有用法,关于if的用法
  9. android 投屏 app 三星,两种支持三星Note10投屏到电脑的方法推荐
  10. 持续更新|有关最强绘画AI--Midjourney资料收集大全
  11. iOS8 定位新增功能
  12. 苹果、微软、谷歌三巨头联手,“杀死”密码
  13. 2018年应届毕业宇视科技嵌入式软件开发工程师面试笔试总结
  14. dz邮箱验证怎么设置_如何设置discuz qq邮箱验证
  15. FS2222可调过压过流芯片IC,40V耐压过压保护可调OVP可调OCP
  16. 使用PyTorch进行知识蒸馏的代码示例
  17. 《大长今》分集剧情介绍(下)
  18. 收银系统的优势功能有哪些?
  19. POI导入导出Excel数据(IDEA版)简单运用
  20. 养生常识 淘米水14个妙用一般人不知道

热门文章

  1. python淘宝爬虫_简单的抓取淘宝图片的Python爬虫
  2. 1412: [ZJOI2009]狼和羊的故事 最小割
  3. 抓狐狸小游戏(python程序设计实验16)
  4. button 和 submit 的区别
  5. 华为、苹果、三星扎堆发财报,谁的日子最不好过?
  6. ym——Andorid-15k+的面试题。
  7. 马云:阿里巴巴不差钱也无黑幕
  8. 什么是长连接、短连接
  9. ATM机类结构设计(一)
  10. [转]国内地图服务可用性比较