You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
2.2 KiB
99 lines
2.2 KiB
4 years ago
|
---
|
||
|
order: 13
|
||
|
title:
|
||
|
zh-CN: 自定义渲染对话框
|
||
|
en-US: Custom modal content render
|
||
|
---
|
||
|
|
||
|
## zh-CN
|
||
|
|
||
|
自定义渲染对话框, 可通过 `react-draggable` 来实现拖拽。
|
||
|
|
||
|
## en-US
|
||
|
|
||
|
Custom modal content render. use `react-draggable` implements draggable.
|
||
|
|
||
|
```jsx
|
||
|
import { Modal, Button } from 'antd';
|
||
|
import Draggable from 'react-draggable';
|
||
|
|
||
|
class App extends React.Component {
|
||
|
state = {
|
||
|
visible: false,
|
||
|
disabled: true,
|
||
|
};
|
||
|
|
||
|
showModal = () => {
|
||
|
this.setState({
|
||
|
visible: true,
|
||
|
});
|
||
|
};
|
||
|
|
||
|
handleOk = e => {
|
||
|
console.log(e);
|
||
|
this.setState({
|
||
|
visible: false,
|
||
|
});
|
||
|
};
|
||
|
|
||
|
handleCancel = e => {
|
||
|
console.log(e);
|
||
|
this.setState({
|
||
|
visible: false,
|
||
|
});
|
||
|
};
|
||
|
|
||
|
render() {
|
||
|
return (
|
||
|
<>
|
||
|
<Button onClick={this.showModal}>
|
||
|
Open Draggable Modal
|
||
|
</Button>
|
||
|
<Modal
|
||
|
title={
|
||
|
<div
|
||
|
style={{
|
||
|
width: '100%',
|
||
|
cursor: 'move',
|
||
|
}}
|
||
|
onMouseOver={() => {
|
||
|
if (this.state.disabled) {
|
||
|
this.setState({
|
||
|
disabled: true,
|
||
|
});
|
||
|
}
|
||
|
}}
|
||
|
onMouseOut={() => {
|
||
|
this.setState({
|
||
|
disabled: false,
|
||
|
});
|
||
|
}}
|
||
|
// fix eslintjsx-a11y/mouse-events-have-key-events
|
||
|
// https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/master/docs/rules/mouse-events-have-key-events.md
|
||
|
onFocus={() => {}}
|
||
|
onBlur={() => {}}
|
||
|
// end
|
||
|
>
|
||
|
Draggable Modal
|
||
|
</div>
|
||
|
}
|
||
|
visible={this.state.visible}
|
||
|
onOk={this.handleOk}
|
||
|
onCancel={this.handleCancel}
|
||
|
modalRender={modal => <Draggable disabled={this.state.disabled}>{modal}</Draggable>}
|
||
|
>
|
||
|
<p>
|
||
|
Just don't learn physics at school and your life will be full of magic and
|
||
|
miracles.
|
||
|
</p>
|
||
|
<br />
|
||
|
<p>Day before yesterday I saw a rabbit, and yesterday a deer, and today, you.</p>
|
||
|
</Modal>
|
||
|
</>
|
||
|
);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
ReactDOM.render(<App />, mountNode);
|
||
|
```
|