import React, {Component, PropTypes} from 'react';
import {Field, FieldArray, reduxForm} from 'redux-form';
import {connect} from 'react-redux';
import {bindActionCreators} from 'redux';
import surveyValidation from './surveyValidation';
import * as surveyActions from 'redux/modules/survey';
SurveyForm
.warning @ warning.js:45createElement @ ReactElementValidator.js:221render @ SurveyForm.js:116_renderValidatedComponentWithoutOwnerOrContext @ ReactCompositeComponent.js:587_renderValidatedComponent @ ReactCompositeComponent.js:607ReactCompositeComponent__renderValidatedComponent @ ReactPerf.js:66mountComponent @ ReactCompositeComponent.js:220ReactCompositeComponent_mountComponent @ ReactPerf.js:66mountComponent @ ReactReconciler.js:37mountComponent @ ReactCompositeComponent.js:225ReactCompositeComponent_mountComponent @ ReactPerf.js:66mountComponent @ ReactReconciler.js:37mountComponent @ ReactCompositeComponent.js:225ReactCompositeComponent_mountComponent @ ReactPerf.js:66mountComponent @ ReactReconciler.js:37mountComponent @ ReactCompositeComponent.js:225ReactCompositeComponent_mountComponent @ ReactPerf.js:66mountComponent @ ReactReconciler.js:37mountComponent @ ReactCompositeComponent.js:225ReactCompositeComponent_mountComponent @ ReactPerf.js:66mountComponent @ ReactReconciler.js:37mountComponent @ ReactCompositeComponent.js:225ReactCompositeComponent_mountComponent @ ReactPerf.js:66mountComponent @ ReactReconciler.js:37mountChildren @ ReactMultiChild.js:241_createContentMarkup @ ReactDOMComponent.js:591mountComponent @ ReactDOMComponent.js:479mountComponent @ ReactReconciler.js:37mountComponent @ ReactCompositeComponent.js:225ReactCompositeComponent_mountComponent @ ReactPerf.js:66mountComponent @ ReactReconciler.js:37mountComponent @ ReactCompositeComponent.js:225ReactCompositeComponent_mountComponent @ ReactPerf.js:66mountComponent @ ReactReconciler.js:37_mountChildByNameAtIndex @ ReactMultiChild.js:474_updateChildren @ ReactMultiChild.js:378updateChildren @ ReactMultiChild.js:326_updateDOMChildren @ ReactDOMComponent.js:871updateComponent @ ReactDOMComponent.js:700receiveComponent @ ReactDOMComponent.js:645receiveComponent @ ReactReconciler.js:87updateChildren @ ReactChildReconciler.js:84_reconcilerUpdateChildren @ ReactMultiChild.js:216_updateChildren @ ReactMultiChild.js:351updateChildren @ ReactMultiChild.js:326_updateDOMChildren @ ReactDOMComponent.js:871updateComponent @ ReactDOMComponent.js:700receiveComponent @ ReactDOMComponent.js:645receiveComponent @ ReactReconciler.js:87_updateRenderedComponent @ ReactCompositeComponent.js:562_performComponentUpdate @ ReactCompositeComponent.js:544updateComponent @ ReactCompositeComponent.js:473ReactCompositeComponent_updateComponent @ ReactPerf.js:66receiveComponent @ ReactCompositeComponent.js:405receiveComponent @ ReactReconciler.js:87_updateRenderedComponent @ ReactCompositeComponent.js:562_performComponentUpdate @ ReactCompositeComponent.js:544updateComponent @ ReactCompositeComponent.js:473ReactCompositeComponent_updateComponent @ ReactPerf.js:66receiveComponent @ ReactCompositeComponent.js:405receiveComponent @ ReactReconciler.js:87_updateRenderedComponent @ ReactCompositeComponent.js:562_performComponentUpdate @ ReactCompositeComponent.js:544updateComponent @ ReactCompositeComponent.js:473ReactCompositeComponent_updateComponent @ ReactPerf.js:66receiveComponent @ ReactCompositeComponent.js:405receiveComponent @ ReactReconciler.js:87_updateRenderedComponent @ ReactCompositeComponent.js:562_performComponentUpdate @ ReactCompositeComponent.js:544updateComponent @ ReactCompositeComponent.js:473ReactCompositeComponent_updateComponent @ ReactPerf.js:66receiveComponent @ ReactCompositeComponent.js:405receiveComponent @ ReactReconciler.js:87_updateRenderedComponent @ ReactCompositeComponent.js:562_performComponentUpdate @ ReactCompositeComponent.js:544updateComponent @ ReactCompositeComponent.js:473ReactCompositeComponent_updateComponent @ ReactPerf.js:66performUpdateIfNecessary @ ReactCompositeComponent.js:421performUpdateIfNecessary @ ReactReconciler.js:102runBatchedUpdates @ ReactUpdates.js:129perform @ Transaction.js:136perform @ Transaction.js:136perform @ ReactUpdates.js:86flushBatchedUpdates @ ReactUpdates.js:147ReactUpdates_flushBatchedUpdates @ ReactPerf.js:66closeAll @ Transaction.js:202perform @ Transaction.js:149batchedUpdates @ ReactDefaultBatchingStrategy.js:62enqueueUpdate @ ReactUpdates.js:176enqueueUpdate @ ReactUpdateQueue.js:24enqueueSetState @ ReactUpdateQueue.js:190ReactComponent.setState @ ReactComponent.js:65(anonymous function) @ ReduxAsyncConnect.js:213 invariant.js:39 Uncaught (in promise) Error: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: undefined. Check the render method ofSurveyForm
.(…)import React, {Component, PropTypes} from 'react'; import {Field, FieldArray, reduxForm} from 'redux-form'; import {connect} from 'react-redux'; import {bindActionCreators} from 'redux'; import surveyValidation from './surveyValidation'; import * as surveyActions from 'redux/modules/survey';
function asyncValidate(data, dispatch, {isValidEmail}) { if (!data.email) { return Promise.resolve({}); } return isValidEmail(data); } @connect(() => ({}), dispatch => bindActionCreators(surveyActions, dispatch) ) @reduxForm({ form: 'survey', fields: ['name', 'email', 'occupation', 'currentlyEmployed', 'sex', 'member'], fieldArray: ['members'], validate: surveyValidation, asyncValidate, asyncBlurFields: ['email'] })
export default class SurveyForm extends Component { static propTypes = { active: PropTypes.string, asyncValidating: PropTypes.bool.isRequired, fields: PropTypes.object.isRequired, fieldArray: PropTypes.array, dirty: PropTypes.bool.isRequired, handleSubmit: PropTypes.func.isRequired, resetForm: PropTypes.func.isRequired, invalid: PropTypes.bool.isRequired, pristine: PropTypes.bool.isRequired, valid: PropTypes.bool.isRequired }
render() { const { asyncValidating, dirty, fields: {name, email, occupation, currentlyEmployed, sex}, fieldArray: {members}, active, handleSubmit, invalid, resetForm, pristine, valid } = this.props; const styles = require('./SurveyForm.scss');
);
);
} }