【问题标题】:React Semantic-UI: Modal component with Form component? Is it possible?React Semantic-UI:带有表单组件的模态组件?可能吗?
【发布时间】:2019-07-02 16:37:09
【问题描述】:

所以,我正在尝试将 Semantic UI 模态组件与表单组件一起使用。

我的问题是,如果我将这两个一起使用,UI 会变得很糟糕。

我创建了一个关于我当前情况的沙盒:https://codesandbox.io/s/2n1pj96ry

您现在可以看到 提交 按钮未附加到 表单。 如果我将Form 组件直接移动到Modal 组件内,如下所示: <Modal...> <Form> ... </Form> </Modal> submit 将附加到 form,但 UI 出现故障。

我尝试为这些组件添加不同的类(例如将ui modal 添加到Form 组件,但效果不佳)。

您有什么建议吗?

感谢您的帮助!

【问题讨论】:

  • type="submit" 按钮的作用是在单击表单时调用附加到表单的onSubmit 处理程序。您没有必须以这种方式提交您的表单,您也可以直接从带有onClick={this.submitHandler} 的按钮调用处理程序。这样,您的按钮就不必是表单的子级。
  • @Jaxx 谢谢,我没想到这一点。基本上我想在不手动调用表单提交方法的情况下解决这个问题,但是如果我不能用“正常”的方式解决这个问题,我会使用你的解决方案。
  • 除非您打算通过“传统”HTML 提交表单(即通过表单操作和整页刷新),否则无论如何您都必须手动调用表单处理程序(或更准确地说,定义你自己的处理程序)。
  • @Jaxx 我愿意接受你的建议,但我不能接受。我认为你应该把你的建议写成答案而不是评论。

标签: reactjs semantic-ui-react semantic-ui-css


【解决方案1】:

您可以使用 Modal 上的 as 属性使其成为表单元素。

<Modal 
   as={Form} 
   onSubmit={e => handleSubmit(e)}
   open={true}
   size="tiny">

在您的模式中任何带有submit 类型的按钮都会触发 onSubmit 处理程序。我发现这是一种选择必填字段并通过浏览器轻松验证表单元素的好方法。

确保将事件传递给您的提交处理程序并使用preventDefault 方法来避免浏览器自动尝试发布您的表单。

分叉你的沙盒并创建一个working example。模式更改为&lt;form&gt; 元素,输入具有required 属性,浏览器将在触发onSubmit 处理程序之前要求该元素有效。默认表单操作被阻止,您可以随意处理。

【讨论】:

  • 我希望早点找到您的解决方案。浪费了这么多时间,结束将提交按钮移动到模式页脚字段并隐藏已经存在的按钮:D
  • 您的解决方案很棒。谢谢。
猜你喜欢
  • 2018-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多