reduxForm, похоже, не отображает состояние в реквизит

Я только что обновился с redux-form:5.3.2 в 6.0.5, Я изменил свой знак в форме, и это выглядит так:

import React, { Component } from 'react';
import { Field, reduxForm } from 'redux-form';
import * as actions from '../actions/authActions';


class SignIn extends Component {

  handleFormSubmit({ email, password }) {
    console.log(this.props);
    this.props.signinUser({ email, password }, this.props.location);
  }

  renderAlert() {
    if (this.props.errorMessage) {
      return (
        <div className="alert alert-danger">
          {this.props.errorMessage}
        </div>
      );
    } else if (this.props.location.query.error) {
      return (
        <div className="alert alert-danger">
          Authorization required!
        </div>
      );
    }
  }

  render() {

    const { message, handleSubmit } = this.props;

    const renderField = ({input, label, type, meta: { touched, error } }) => (
      <fieldset className="form-group">
        <label>{label}</label>
        <input {...input} className="form-control" />
      </fieldset>
    )


    return (
      <form onSubmit={handleSubmit(this.handleFormSubmit.bind(this))}>
        {this.renderAlert()}
        <Field name="username" type="text" component={renderField} label="Username"/>
        <Field name="password" type="password" component={renderField} label="Password"/>
        <button action="submit" className="btn btn-primary">Sign In</button>
      </form>
    );
  }
}

function mapStateToProps(state) {
  return { errorMessage: state.auth.error }
}

export default reduxForm({
  form: 'signin',
  fields: ['email', 'password']
}, mapStateToProps, actions)(SignIn)

До обновления я не пользовался Field компонент, но все остальное то же самое, и мои действия this.props.signinUser звонили. Тем не менее, сейчас он не существует в this.props, Понижение до 5.3.2 продолжает работать. Я не прошел процесс постепенного обновления, чтобы выяснить, где он сломался, сломался ли он, и предположил, что я не сделал что-то не так.

Любой совет?

1 ответ

Решение

И... Я только что нашел ответ. Я должен был изменить это:

export default reduxForm({
  form: 'signin',
  fields: ['email', 'password']
}, mapStateToProps, actions)(SignIn)

к этому:

SignIn = reduxForm({
  form: 'signin',
  fields: ['email', 'password']
})(SignIn);

export default connect(mapStateToProps, actions)(SignIn);

Это, кажется, не в документах, но это должно быть.

Другие вопросы по тегам