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 |
图标 Icon 类型 |
String |
question-circle |
代码演示
import { Modal, Button } from 'antd';
const App = React.createClass({
getInitialState() {
return { visible: false };
},
showModal() {
this.setState({
visible: true
});
},
handleOk() {
console.log('点击了确定');
this.setState({
visible: false
});
},
handleCancel() {
this.setState({
visible: false
});
},
render() {
return <div>
<Button type="primary" onClick={this.showModal}>显示对话框</Button>
<Modal title="第一个 Modal" visible={this.state.visible}
onOk={this.handleOk} onCancel={this.handleCancel}>
<p>对话框的内容</p>
<p>对话框的内容</p>
<p>对话框的内容</p>
</Modal>
</div>;
}
});
ReactDOM.render(<App />, document.getElementById('components-modal-demo-basic'));
import { Modal, Button } from 'antd';
const confirm = Modal.confirm;
function showConfirm(){
confirm({
title: '您是否确认要删除这项内容',
content: '点确认 1 秒后关闭',
onOk: function() {
return new Promise(function(resolve) {
setTimeout(resolve, 1000);
});
},
onCancel: function() {}
});
}
ReactDOM.render(
<Button onClick={showConfirm}>
确认对话框
</Button>, document.getElementById('components-modal-demo-confirm-promise'));
import { Modal, Button } from 'antd';
const Test = React.createClass({
getInitialState() {
return {
ModalText: '对话框的内容',
visible: false
};
},
showModal() {
this.setState({
visible: true
});
},
handleOk() {
this.setState({
ModalText: '对话框将在两秒后关闭',
confirmLoading: true
});
setTimeout(() => {
this.setState({
visible: false,
confirmLoading: false
});
}, 2000);
},
handleCancel() {
console.log('点击了取消');
this.setState({
visible: false
});
},
render() {
return <div>
<Button type="primary" onClick={this.showModal}>显示对话框</Button>
<Modal title="对话框标题"
visible={this.state.visible}
onOk={this.handleOk}
confirmLoading={this.state.confirmLoading}
onCancel={this.handleCancel}>
<p>{this.state.ModalText}</p>
</Modal>
</div>;
}
});
ReactDOM.render(<Test/>, document.getElementById('components-modal-demo-async'));
import { Modal, Button } from 'antd';
const confirm = Modal.confirm;
function showConfirm(){
confirm({
title: '您是否确认要删除这项内容',
content: '一些解释',
onOk: function() {
console.log('确定');
},
onCancel: function() {}
});
}
ReactDOM.render(
<Button onClick={showConfirm}>
确认对话框
</Button>, document.getElementById('components-modal-demo-confirm'));
import { Modal, Button } from 'antd';
function info() {
Modal.info({
title: '这是一条通知信息',
content: '一些附加信息一些附加信息一些附加信息',
onOk: function() {}
});
}
function success() {
Modal.success({
title: '这是一条通知信息',
content: '一些附加信息一些附加信息一些附加信息'
});
}
function error() {
Modal.error({
title: '这是一条通知信息',
content: '一些附加信息一些附加信息一些附加信息'
});
}
ReactDOM.render(<div>
<Button onClick={info}>信息提示</Button>
<Button onClick={success}>成功提示</Button>
<Button onClick={error}>失败提示</Button>
</div>, document.getElementById('components-modal-demo-info'));