使用react hooks实现类似Antd的对话框Modal组件。只需要实现基本功能,不需要像Antd那样功能完善 对话框组件有标题、内容区和底部,并且底部有两个按钮ok和cancel Modal组件要求支持title(标题),visible(对话框是否可见) onOk(点击按钮的回调函数)和onCancel(点击取消按钮的回调函数)属性Prop
时间: 2024-01-24 07:17:15 浏览: 123
好的,这里是使用react hooks实现类似Antd的对话框Modal组件的示例代码:
```jsx
import React, { useState } from "react";
import ReactDOM from "react-dom";
const Modal = ({ title, visible, onOk, onCancel, children }) => {
const [isModalVisible, setIsModalVisible] = useState(visible);
const handleOk = () => {
setIsModalVisible(false);
onOk && onOk();
};
const handleCancel = () => {
setIsModalVisible(false);
onCancel && onCancel();
};
return isModalVisible ? (
<div className="modal-wrapper">
<div className="modal">
<div className="modal-header">
<h3 className="modal-title">{title}</h3>
</div>
<div className="modal-content">{children}</div>
<div className="modal-footer">
<button className="modal-btn modal-btn-ok" onClick={handleOk}>
OK
</button>
<button className="modal-btn modal-btn-cancel" onClick={handleCancel}>
Cancel
</button>
</div>
</div>
</div>
) : null;
};
const App = () => {
const [visible, setVisible] = useState(false);
const showModal = () => {
setVisible(true);
};
const handleOk = () => {
console.log("OK button clicked");
};
const handleCancel = () => {
console.log("Cancel button clicked");
};
return (
<div>
<button onClick={showModal}>Show Modal</button>
<Modal
title="Modal Title"
visible={visible}
onOk={handleOk}
onCancel={handleCancel}
>
<p>Modal Content</p>
</Modal>
</div>
);
};
ReactDOM.render(<App />, document.getElementById("root"));
```
这个示例代码中,我们首先定义了一个`Modal`组件,它包含了标题、内容区和底部按钮。在组件内部,我们使用`useState`来管理对话框的可见状态,并且定义了`handleOk`和`handleCancel`函数来处理点击ok和cancel按钮的事件。最后,我们在`return`语句中根据对话框的可见状态来渲染对话框。
在`App`组件中,我们使用`useState`来管理对话框的可见状态,并且定义了`showModal`、`handleOk`和`handleCancel`函数来处理对话框的显示和按钮的点击事件。最后,我们在`return`语句中渲染一个按钮和一个对话框。
这个示例代码中,我们实现了一个简单的对话框Modal组件,它支持title、visible、onOk和onCancel属性Prop。如果你需要更多的功能,可以根据自己的需求进行扩展。
阅读全文