【问题标题】:Attached form button doesn't trigger form submit when clicked单击时附加的表单按钮不会触发表单提交
【发布时间】:2019-12-12 15:56:12
【问题描述】:

考虑以下示例:

import React, { Component } from 'react'
import { Form } from 'semantic-ui-react'

class FormExample extends Component {
  state = {}

  handleChange = (e, { name, value }) => this.setState({ [name]: value })

  handleSubmit = () => this.setState({ email: '', name: '' })

  render() {
    const { name, email } = this.state

    return (
      <Form onSubmit={this.handleSubmit}>
        <Form.Group>
          <Form.Input placeholder='Name' name='name' value={name} onChange={this.handleChange} />
          <Form.Input placeholder='Email' name='email' value={email} onChange={this.handleChange} />
          <Form.Button attached='bottom' content='Submit' />
        </Form.Group>
      </Form>
    )
  }
}

当附加Form.Button 时,单击它不会导致表单提交。当attached 属性被省略时,onSubmit 处理程序按预期工作。

这是预期行为还是我应该在 GitHub 上提交错误问题?

【问题讨论】:

  • attached 不是 Form.Button 的有效道具。它仅适用于 Button。

标签: javascript reactjs button onsubmit semantic-ui-react


【解决方案1】:

Form.Button 没有attached 作为prop

通过添加此prop,您的button 标记将转换为div 标记。通过添加type="submit" 也不能使用这个prop,因为毕竟它只是div。要提交表单,我们只需要button 标签。

最好不要在Form中使用这个attachedprop

你只能拥有这个,

<Form.Button content='Submit' />

或者你可以使用Button标签和type="submit"

import {Button} from 'semantic-ui-react'

<Button type="submit">Submit</Button>

【讨论】:

  • OP 询问为什么将prop 添加到Form.Button 没有按预期工作。
  • 删除attached 属性使表单提交工作。使用attached={true}type 设置为submit 仍然不能使提交工作。所以我接受这个答案。谢谢@ravibagul91
  • 顺便说一下,Form.Button 也没有type 属性,但Button 确实 两者都有。见我的评论stackoverflow.com/questions/57353287/…
【解决方案2】:

在你的表单中试试

<Button>Submit</Button>

和html一样,表单内的按钮默认触发表单提交事件。

【讨论】:

  • 什么?为什么?您必须先导入Button
  • 这不是 HTML。这是 ReactJS。
【解决方案3】:

请将 type="submit" 添加到您的提交按钮

<Form.Group>
    <Form.Input placeholder='Name' name='name' value={name} onChange={this.handleChange} />
     <Form.Input placeholder='Email' name='email' value={email} onChange={this.handleChange} />
     <Button type='submit'>Submit</Button>
 </Form.Group>

【讨论】:

  • 在设置attached={true} 时添加type='submit' 仍然不起作用。附加未设置或设置为 false 时,表单提交工作正常,有和没有 type 属性集。
【解决方案4】:

Form.Button 没有 attached 作为属性。

您只能使用content = 'Submit',而attached 属性将不起作用。

所以这是正确的代码:

<Form.Button content='Submit' />

或者如果你想要新的属性:

import { Form, Button } from 'semantic-ui-react'


<Button type="submit">Submit</Button>

所以如果你想导入Button,你可以使用它并做type="Submit"属性,然后在里面添加Submit作为文本,然后结束Button

总之,你不能在里面有attached,所以你必须删除它才能工作。

【讨论】:

  • 是的,根据文档,Form.Button 只有 ascontrol 属性。但它也没有 type 属性。同时,Button 确实同时具有typeattached 属性(react.semantic-ui.com/elements/button)。感觉前后矛盾。
猜你喜欢
  • 1970-01-01
  • 2017-06-06
  • 2021-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-15
  • 1970-01-01
相关资源
最近更新 更多