Redux:表单输入字段保持空白

Redux: form input fields stay blank

本文关键字:空白 字段 输入 表单 Redux      更新时间:2023-09-26

我使用这个模板安装了redux-form,附加了reducer并检查了它在redux devtools中运行良好。

我可以看到键入时的动作流很好,但每次击键后表单值和输入都是空的。

控制台没有错误,我找不到任何线索。

我错过了一些小的东西,也许它是一个组件渲染或可能它是关于react版本…

我的包:

"react": "15.3.2",
"redux-form": "^6.2.0",

我的登录表单:

import React from 'react';
import { Field, reduxForm } from 'redux-form/immutable';

const renderField = ({ input, label, type, meta: { touched, error } }) => {
  console.log(input);
  return (
    <div>
      <label>{label}</label>
      <div>
        <input {...input} placeholder={label} type={type} />
        {touched && error && <span>{error}</span>}
      </div>
    </div>
  );
};
class FormLogin extends React.Component { // eslint-disable-line react/prefer-stateless-function
  static propTypes = {
    handleSubmit: React.PropTypes.func
  };
  render() {
    const { error, handleSubmit } = this.props;
    return (
      <div>
        <input type="text" name="ah1" />
        <form onSubmit={handleSubmit}>
          <input type="text" name="ah2" />
          <div>
            <Field id="username" name="username" type="text" component={renderField} label="Username" />
          </div>
          <div>
            <Field id="password" name="password" type="text" component={renderField} label="Password" />
          </div>
          {error && <strong>{error}</strong>}
          <button type="submit">Submit</button>
        </form>
      </div>
    );
  }
}
export default reduxForm({
  form: 'FormLogin'
})(FormLogin);

对于我来说,我没有从示例中命名reducer的确切名称,这不幸导致了这个难以调试的错误。

确保这个reducer被列为'form: formReducer',如示例所示。

发现问题,如果有人来这里寻找答案。

有一个hack来修复它。你可以在这里找到更多信息:https://github.com/mxstbr/react-boilerplate/issues/958