Это мой компонент - форма редукции - не может загружать начальные значения - возникают ошибки проверки при отправке формы, пробовали разные способы обновить начальные значения, но ни один из них не работает? что мне здесь не хватает? как передать существующие значения в качестве реквизита?

import React, { PropTypes, Component } from 'react';
    import { reduxForm } from 'redux-form';
    import { Link } from 'react-router';
    import * as actions from '../../actions/myactions';

    class Component extends Component {

      constructor(props) {
        super(props);
        this.handleFormSubmit = this.handleFormSubmit.bind(this);
      }

      componentDidMount() {
        this.props.getapidata(param);
      }

      handleFormSubmit({ email, name }) {
        this.props.createNewvalues(url, {
          email: emailval,
          name: nameval,
        }) :
      }

      renderAlert() {
        //blah
      }

      render() {
        const email = this.props.apiData && this.props.apiData.email ? this.props.apiData.email : [];
        const fname = this.props.apiData && this.props.apiData.fname ? this.props.apiData.fname : [];
        const initialvalues = {
          email: email_from_api,
          CCemail: name_from_api,

        };
        const { handleSubmit, fields: { email, name } } = this.props;
        return (
          <div>
            <div>
              <form onSubmit={handleSubmit(this.handleFormSubmit)}>
                    <fieldset>
                      <div>
                        <input value={emailsval} id="email" {...email} type="email"} required multiple />
                        <label className="input-label" htmlFor="Email">To</label>
                        { email.touched && email.error && <div> { email.error } </div> }
                      </div>
                    </fieldset>
                    <fieldset>
                      <div>
                        <input value={nameval} id="name" {...name} type="email"} multiple />
                        <label className="input-label" htmlFor="name">name (optional)</label>
                        { name.touched && name.error && <div> { name.error } </div> }
                      </div>
                    </fieldset>

              </form>
            </div>
          </div>
        );
      }
    }
    function validate(formProps) {
      const errors = {};
      if (!formProps.email) {

      }
      if (!formProps.name) {

      }
      return errors;
    }

    function mapStateToProps(state) {
      return {
        responseData: state.actions.responseData,
        initialValues: state.actions.apidata,
      };
    }

    export default reduxForm({
      form: 'myform',
      enableReinitialize: true,
      fields: [
        'email',
        'name',
      ],
      validate,
    }, mapStateToProps, actions)(Component);
0
splendidDev 26 Июн 2017 в 21:34
Вы пробовали добавить initialValues ​​в качестве реквизита? Вы должны иметь возможность разместить их рядом с enableReinitialize или передать их в качестве реквизита.
 – 
BHubbard
26 Июн 2017 в 22:59

2 ответа

Вы должны добавить defaultProps для компонента.

class App extends from React.Component{
  constructor(props){
     super(props);
  }

  render(){
      let { data } = this.props;
      return <h1>{ data }</h1>
  }
}

App.deafultProps = {
    data: 'Sample text'
}
0
Vasi 26 Июн 2017 в 21:49

Где твоя связь? Попробуйте переставить свой экспорт. Это сработало для меня

export default connect( mapStateToProps, { load_default , update_section} )(
reduxForm({
    form: 'myForm',
    enableReinitialize : true 
})(EditSection)
);
0
artSir 19 Сен 2017 в 20:48