reactjs - 如何在handleSubmit 中打开一个对话框?
问题描述
我有一个看起来像这样的 handleSubmit 组件: File.tsx File.tsx
export default function SimpleDialog() {
const handleSubmit = (event: any) => {
<SimpleDialog />;
}
return(
<form>
<Button type="submit"> Save</Button>
</form>
)
}
我有另一个名为 SimpleDialog.tsx 的文件
export default function SimpleDialog() {
const [open, setOpen] = React.useState(false);
const handleClickOpen = () => {
setOpen(true);
};
const handleClose = (value: string) => {
setOpen(false);
};
return (
<div>
{" "}
<Dialog open={open} onClose={handleClose} />{" "}
</div>
);
}
当我单击保存按钮时,我想打开我的对话框。我无法打开我的对话框。我该怎么做?
解决方案
您只能通过从功能组件返回 JSX 来呈现它。任何回调都不是有效的地方。
在这种情况下,你真的想SimpleDialog
保持状态是否打开。对话框是愚蠢的,只需要显示内容,而其他一些组件将管理该对话框,并告诉该做什么以及何时以及显示什么。
所以在handleSubmit
你想设置一些状态,然后对你渲染的状态做出反应。
例如,首先使用一些可用于跟踪是否应显示对话框的状态:
const [showingDialog, setShowingDialog] = useState(false)
然后在 中handleSubmit
,设置该状态:
const handleSubmit = () => setShowingDialog(true)
showDialog
最后,如果是,则渲染您的对话框true
:
return (
<div>
{ showDialog && <SimpleDialog /> }
...Other Content...
</div>
)
您可能希望更改您的对话框以接受一个函数作为应该关闭对话框时调用的道具。这将使您可以执行以下操作以再次关闭对话框。
<SimpleDialog onClickOk={() => setShowingDialog(false)} />
推荐阅读
- python - tesseract:如何使用用户词 python
- python - 无法正确安装 python 库
- node.js - nvm install node 无法在 macOS Big Sur M1 芯片上安装
- ajax - 无法验证 ajax.googleapis.com 的证书
- r - 如何在 R 中使用预测神经网络时间序列模型?
- python - 已安装 Python3-wstool 但未找到 wstool
- reactjs - 添加到 redux-toolkit 中的购物车(状态未定义),有人请帮帮我吗?
- python - 带有负载权重的 TensorFlow 内存问题
- r - 在R中同时估计两个数据集的威布尔分布参数
- python - 如何访问 scikit-learn 管道中的“每个估计器”?