javascript - React - 更改输入时自动提交表单

标签 javascript reactjs react-select

我正在尝试使用 onChange 事件在 React 中自动提交表单。它适用于常规 input 字段,但不知何故不适用于 react-select .这是一个 gist我的 React 组件。

我专门尝试更新 startDateendDate 属性。我还收到此警告:EducationForm 正在将不受控制的文本类型输入更改为受控制。我怀疑这是因为 startDateendDate 没有初始值,所以我在构造函数中添加了这个:

this.state.attributes.startDate = ''
this.state.attributes.endDate = ''

但是,尽管如此,我仍然收到相同的警告。这是我尝试使用 Select 标签的 onChange 事件提交表单:

<Select
  className='form-control'
  name='startDate'
  value={attributes.startDate}
  required={true}
  onChange={e => {
    this.updateAttribute(e, 'startDate')
  }}
  options={this.options}
/>

<Select
  className='form-control'
  name='endDate'
  value={attributes.endDate}
  required={true}
  onChange={e => {
    this.updateAttribute(e, 'endDate')
  }}
  options={this.options}
/>

updateAttribute 调用 submitForm 方法:

updateAttribute = (e: ReactEvent, attribute: string) => {
  e.preventDefault && e.preventDefault()

  const attributes = {
    ...this.state.attributes,
    [attribute]: e.target ? e.target.value : e
  }
  this.setState({ attributes: attributes }, () => this.submitForm())
}

最佳答案

您的问题出在您的 onChange 处理程序中。 React-Select 对 onChange

有一个非常具体的签名
function (
  One of <
    Object,
    Array<Object>,
    null,
    undefined
  >,
  {
    action required One of <
      "select-option",
      "deselect-option",
      "remove-value",
      "pop-value",
      "set-value",
      "clear",
      "create-option"
    >
  }
  ) => undefined

是的,大多数人都觉得这令人困惑。你的 onChange 属性会变成这样:

onChange={(value, {action}) => this.updateValue(value, action)}

您的 updateValue 方法然后根据所采取的操作类型对您选择的值更改进行操作。单选中的 React-Select 将为您提供所选 optionvalue 对象(构成该 option 的整个对象)。多选中的 React-Select 将为您提供一个对象数组作为 value。您的 类型不同,具体取决于它是单选还是多选,以及采取的操作

在这一点上,您如何处理您的 取决于您。获取该,将适当的键应用于您正在发布的数据对象,然后调用您想要保存数据的任何方法。

关于javascript - React - 更改输入时自动提交表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51471445/

相关文章:

javascript - 简单的 javascript 表单提交有 2 个句柄?

javascript - 使用 React 和 Webpack 时如何修复 "Module build failed: SyntaxError: Unexpected token"错误?

javascript - 类型错误 : Cannot read property of null in React Component

reactjs - React-select-fast-filter-options 无法正常工作

css - 样式 ReactSelect 菜单显示所有选项,没有垂直滚动

javascript - 循环内的 Ajax 调用

javascript - ${}(美元符号和大括号)在 JavaScript 中的字符串中是什么意思?

javascript - Firebase URL 缩短器与 jQuery Ajax Post?

javascript - 在收到适当的状态之前 react 组件安装

forms - React - 预填充表单