无法使用handleSubmit捕获Redux表单字段值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法使用handleSubmit捕获Redux表单字段值相关的知识,希望对你有一定的参考价值。

我正在尝试将Redux-form v6集成到我的项目中,但无论我尝试复制示例代码有多紧密,我都无法获得有效的redux-form。

一切似乎都正确连接,但handleSubmit函数不捕获我的表单字段中的任何值。

任何关于这个问题的指导将不胜感激。我的代码如下。

从减速机开始,似乎没有什么事情在这里。

import { reducer as formReducer } from 'redux-form';

export default combineReducers({
  form: formReducer
});

然后,我使用容器组件将表单组件连接到redux表单,它使用所有Redux-form函数很好地装饰表单组件。

CreateCompany.js

import CreateCompany from '../components/create_company';
import { reduxForm } from 'redux-form';

export default reduxForm({
  form: 'company-submission'
})(CreateCompany);

实际的形式如下所示:

CreateCompany.jsx

<form onSubmit={ handleSubmit(values => {console.log("values",values)})}>

  <div>
    <label htmlFor="group">Group Name (Required)</label>
    <Field name="group" component={FormInput} type="text"/>
  </div>

  <div>
    <Field
      name="group-type"
      component={DropDownSelect}
      selectOptions={this.state.groupTypes}
      id="group-type"
    />
    <label>Group Type</label>
  </div>

  <button type="submit">Log In</button>

</form>

提供给Field组件的文本输入无状态函数。

FormInput.js(注意:我必须在输入标记中包含{...input.value}才能输入字段。在示例代码中,仅使用{...input}。)

import React from 'react';

const FormInput = ({ id, type, className, input }) => {
  className = className || "";
  id = id || "";
  return (
    <input id={id} {...input.value} type={type} className={className}/>
  )
}

export default FormInput;

DropDownSelect.js

import React from 'react';

const DropDownSelect = ({ input, selectOptions, id }) => {
  const renderSelectOptions = (selectOption) => (
    <option key={selectOption} value={selectOption}>{selectOption}</option>
  )
  return (
    <select id={id} {...input}>
      {selectOptions.map(renderSelectOptions)}
    </select>
  );
}

export default DropDownSelect;

知道我做错了什么吗?

答案

handleSubmit应该在你的CreateCompany组件之外定义并通过道具传递给它。看看examples

以上是关于无法使用handleSubmit捕获Redux表单字段值的主要内容,如果未能解决你的问题,请参考以下文章

使用 Redux、Thunk、Axios 创建多部分表单组件

Redux 表单中 <Field> 中的 className

手动设置 redux-form 字段和/或表单错误

如何在 react redux 中使用异步函数

redux-observable 无法从发出的动作中捕获错误,错误会停止动作流

无法通过 React 和 Redux 将相同的表单组件用于添加或编辑模式