使用“Render”函数创建按钮,点击“按钮”后,弹出对话框“你好”
时间: 2023-11-10 09:06:36 浏览: 159
以下是使用React中的“Render”函数创建按钮并弹出对话框“你好”的示例代码:
```jsx
import React, { useState } from 'react';
import ReactDOM from 'react-dom';
function App() {
const [showDialog, setShowDialog] = useState(false);
const handleButtonClick = () => {
setShowDialog(true);
};
const handleDialogClose = () => {
setShowDialog(false);
};
return (
<div>
<button onClick={handleButtonClick}>按钮</button>
{showDialog && (
<Dialog onClose={handleDialogClose}>
<p>你好</p>
</Dialog>
)}
</div>
);
}
function Dialog(props) {
const handleOverlayClick = () => {
props.onClose();
};
const handleDialogClick = (event) => {
event.stopPropagation();
};
return ReactDOM.createPortal(
<div className="dialog-overlay" onClick={handleOverlayClick}>
<div className="dialog" onClick={handleDialogClick}>
{props.children}
</div>
</div>,
document.body
);
}
ReactDOM.render(<App />, document.getElementById('root'));
```
在上面的代码中,我们使用`useState`钩子来管理对话框的显示状态。当用户单击“按钮”时,我们将`showDialog`状态设置为`true`,以显示对话框。对话框是使用`Dialog`组件实现的,该组件是通过`ReactDOM.createPortal`函数将其渲染到`body`元素中的一个单独的DOM节点中。
`Dialog`组件具有一个`onClose`属性,当用户单击对话框外部的覆盖层或对话框内部的关闭按钮时,将调用该属性。在上面的代码中,我们使用`handleOverlayClick`和`handleDialogClick`函数来处理这些事件。当用户单击覆盖层时,我们会调用`onClose`属性,以便关闭对话框。当用户单击对话框内部时,我们会停止事件传播,以防止关闭对话框。
当对话框显示时,我们将渲染一个包含“你好”文本的`p`元素。如果您想要更复杂的对话框,可以将其替换为另一个组件或一些HTML和CSS。
阅读全文