Modal 对话框
模态对话框。
何时使用
需要用户处理事务,又不希望跳转页面以致打断工作流程时,可以使用 Modal
在当前页面正中打开一个浮层,承载相应的操作。
另外当需要一个简洁的确认框询问用户时,可以使用精心封装好的 ant.Modal.confirm()
等方法。
API
参数 |
说明 |
类型 |
默认值 |
visible |
对话框是否可见 |
Boolean |
无 |
confirmLoading |
确定按钮 loading |
Boolean |
无 |
title |
标题 |
React.Element |
无 |
onOk |
点击确定回调 |
function |
无 |
onCancel |
点击遮罩层或右上角叉或取消按钮的回调 |
function |
无 |
width |
宽度 |
String or Number |
520 |
footer |
底部内容 |
React.Element |
确定取消按钮 |
Modal.xxx()
包括:
Modal.info
Modal.success
Modal.error
Modal.confirm
以上均为一个函数,参数为 object,具体属性如下:
参数 |
说明 |
类型 |
默认值 |
title |
标题 |
React.Element or String |
无 |
onOk |
点击确定回调,参数为关闭函数,返回 promise 时 resolve 后自动关闭 |
function |
无 |
onCancel |
取消回调,参数为关闭函数,返回 promise 时 resolve 后自动关闭 |
function |
无 |
width |
宽度 |
String or Number |
416 |
iconClassName |
图标样式名 |
String |
anticon-question-circle |
组件演示
var Modal = antd.Modal;
var App = React.createClass({
getInitialState() {
return { visible: false };
},
showModal() {
this.setState({
visible: true
});
},
handleOk() {
console.log('点击了确定');
this.setState({
confirmLoading: false,
visible: false
});
},
handleCancel() {
this.setState({
visible: false
});
},
render() {
return <div>
<button className="ant-btn ant-btn-primary" onClick={this.showModal}>显示对话框</button>
<Modal title="第一个 Modal" visible={this.state.visible}
confirmLoading={this.state.confirmLoading} onOk={this.handleOk} onCancel={this.handleCancel}>
<p>对话框的内容</p>
<p>对话框的内容</p>
<p>对话框的内容</p>
</Modal>
</div>;
}
});
React.render(<App /> , document.getElementById('components-modal-demo-basic'));
var confirm = antd.Modal.confirm;
function showConfirm(){
confirm({
title: '您是否确认要删除这项内容',
content: '一些解释',
onOk: function() {
alert('1 秒后关闭');
return new Promise(function(resolve) {
setTimeout(resolve, 1000);
});
},
onCancel: function() {}
});
}
React.render(
<button className="ant-btn" onClick={showConfirm}>
确认对话框
</button>, document.getElementById('components-modal-demo-confirm-promise'));
var Modal = antd.Modal;
var ModalText = '对话框的内容';
var Test = React.createClass({
getInitialState() {
return {
ModalText: '对话框的内容',
visible: false
};
},
showModal() {
this.setState({
visible: true
});
},
handleOk() {
this.setState({
ModalText: '对话框将在两秒后关闭'
});
setTimeout(() => {
this.setState({
visible: false
});
}, 2000);
},
handleCancel() {
console.log('点击了取消');
this.setState({
visible: false
});
},
render() {
return <div>
<button className="ant-btn ant-btn-primary" onClick={this.showModal}>显示对话框</button>
<Modal title="对话框标题"
visible={this.state.visible}
onOk={this.handleOk}
onCancel={this.handleCancel}>
<p>{this.state.ModalText}</p>
</Modal>
</div>;
}
});
React.render(<Test/> , document.getElementById('components-modal-demo-custom'));
var confirm = antd.Modal.confirm;
function showConfirm(){
confirm({
title: '您是否确认要删除这项内容',
content: '一些解释',
onOk: function() {
alert('确定');
},
onCancel: function() {}
});
}
React.render(
<button className="ant-btn" onClick={showConfirm}>
确认对话框
</button>, document.getElementById('components-modal-demo-confirm'));
var Modal = antd.Modal;
function info() {
Modal.info({
title: '这是一条通知信息',
content: '一些附加信息一些附加信息一些附加信息',
onOk: function() {}
});
}
function success() {
Modal.success({
title: '这是一条通知信息',
content: '一些附加信息一些附加信息一些附加信息'
});
}
function error() {
Modal.error({
title: '这是一条通知信息',
content: '一些附加信息一些附加信息一些附加信息'
});
}
React.render(<div>
<button className="ant-btn" onClick={info}>信息提示</button>
<button className="ant-btn" onClick={success}>成功提示</button>
<button className="ant-btn" onClick={error}>失败提示</button>
</div>, document.getElementById('components-modal-demo-info'));