html输入提示框点击确认显示内容,前端 自定义确认提示框(二)
以上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 (
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输入提示框点击确认显示内容,前端 自定义确认提示框(二)相关推荐
- php按钮如何加显示不出来,javascript - 点击按钮 显示更多,自定义变量显示不出来?...
点击按钮 显示更多,自定义变量显示不出来? 提示错误信息:. 想要达到的效果: 点击按键一次更多,多显示3条信息 显示更多 支持 小明1这是我的个性签名 288个赞同 本回答分成[旅游版]和[日常版] ...
- jquery实现点击标题显示内容,同级其他元素内容隐藏
最终呈现效果: jquery实现点击标题显示内容,同级其他元素内容隐藏视频 核心代码块: //点击标题元素('历史上的今天')$(document).on('click','.item',functi ...
- layui 下拉框空选项不显示_layui下select下拉框不显示或没有效果
Layui会对select.checkbox.radio等原始元素隐藏,从而进行美化修饰处理.但这需要依赖于form组件,所以你必须加载 form,并且执行一个实例.值得注意的是:导航的Hover效果 ...
- 【前端积累】点击切换显示内容
1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="U ...
- Qt总结:QMessageBox(原生态弹出框及究极超nice封装自定义弹出框)
一.前言 在Qt中经常需要弹出窗口,QMessageBox可以实现此功能,一共有三种窗口,information, question, 和 warning,critical, about分别对应感叹号 ...
- 密码框点击眼睛显示隐藏
输入框input变成密码框只需要简简单单的添加一个type="password"就好了 <input type="password" id="i ...
- vue-element日期框点击不显示,不刷新
添加blur事件,手动强制刷新 <el-date-picker @blur="changeTime" v-model="form.time" type=& ...
- 解决win10下PPT打不开,显示内容有问题,提示修复但修复不成功
先说一下问题: 下了几个PPT,有几章打得开,有几章打不开,有的电脑能打开,但是不管是压缩解压缩还是重新下载,还是从别人电脑上拷过来,双击打开都显示这个,说明问题还是在PPT本身. 点击修复后: 网上 ...
- c语言程序一运行就显示,为什么一运行这个读取并显示内容的程序就提示程序错误?...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 请各位朋友帮忙看一看,这是什么原因造成的,一直没有解决这个问题. 平台:CFREE 生成文件的程序代码如下: #include #include" ...
最新文章
- thrift的中文编码处理
- 使用commandfield删除、修改gridview
- tf.device()指定tensorflow运行的GPU或CPU设备
- vs2012+wdk8.0 搭建wdf驱动开发环境
- C语言实现三种死循环
- 三国群英传服务器端架设修改,三国群英传OL单机架设视频教程
- 2011端午节搞笑短信大全
- C语言if的所有用法,关于if的用法
- android 投屏 app 三星,两种支持三星Note10投屏到电脑的方法推荐
- 持续更新|有关最强绘画AI--Midjourney资料收集大全
- iOS8 定位新增功能
- 苹果、微软、谷歌三巨头联手,“杀死”密码
- 2018年应届毕业宇视科技嵌入式软件开发工程师面试笔试总结
- dz邮箱验证怎么设置_如何设置discuz qq邮箱验证
- FS2222可调过压过流芯片IC,40V耐压过压保护可调OVP可调OCP
- 使用PyTorch进行知识蒸馏的代码示例
- 《大长今》分集剧情介绍(下)
- 收银系统的优势功能有哪些?
- POI导入导出Excel数据(IDEA版)简单运用
- 养生常识 淘米水14个妙用一般人不知道