I'm trying to make two simple forms with a Save button to work in React, but it appears that the Save button component is unable to see the two forms.
My Form component is as follows:
import React from "react";
import { Field, reduxForm } from "redux-form";
const validate = values => {
const errors = {};
if (!values.name) {
errors.name = "Required";
}
if (!values.age) {
errors.age = "Required";
}
return errors;
};
const renderField = ({
input,
label,
type,
value,
meta: { touched, error, warning }
}) => (
<div>
<label>{label}</label>
<div>
<input {...input} placeholder={label} type={type} />
{touched && (error && <span className="error">{error}</span>)}
</div>
</div>
);
const Form1 = props => {
const { handleSubmit } = props;
return (
<div>
<form onSubmit={handleSubmit}>
<Field name="name" component={renderField} type="text" label="Name" />
<Field name="age" component={renderField} type="text" label="Age" />
<button type="submit">Submit</button>
</form>
</div>
);
};
export default reduxForm({
form: "step1", // a unique identifier for this form
validate
})(Form1);
And my SaveButton is as follows:
import React, { Component } from "react";
export default class SaveButton extends Component {
constructor(props) {
super(props);
this.props = props;
this.submit = this.submit.bind(this);
}
submit() {
console.log(this.props);
const { dispatch, forms } = this.props;
forms.forEach(({ formName, isValid, values, errors }) => {
if (isValid) {
console.log(values);
} else {
// dispatch(touch(formName, ...Object.keys(errors)));
}
});
}
render() {
return (
<button type="button" onClick={this.submit}>
Save
</button>
);
}
}
Clicking Save gives Cannot read property 'forEach' of undefined because forms is undefined and this.props is empty. Anyone know why the forms can't be seen from SaveButton?
