Ich habe viele Möglichkeiten, dies zu tun und haben sogar eine HOC und änderte es zu einer Klasse Komponente. Ich habe die wenigen Möglichkeiten ausprobiert, die ich gesehen habe, wie zum Beispiel den Aufruf von handleSubmit mit der Requisite. Ich benutze Redux-Tools und ich bin es gewohnt, etwas wie submit_failed oder submit_success zu sehen, aber ich sehe das nicht und ich weiß nicht, warum die onSubmit-Funktion nicht ausgelöst wird. Hier ist ein Beispiel für eine der Möglichkeiten, wie ich es tat, wo ich das einfache Beispiel in redux-Form Dokumentationen folgen:redux-form onSubmit-Funktion nicht feuern
import React from 'react';
import { Field, reduxForm } from 'redux-form';
import { Form, Button, Grid } from 'semantic-ui-react';
import { Link } from 'react-router-dom';
import {connect} from 'react-redux';
import {bindActionCreators} from 'redux';
import {signup} from '../../actions/user-actions';
import { required, minValue7, email, renderField } from '../helpers/validations';
let SignupForm = (props) => {
const { handleSubmit } = props.signup;
return (
<Grid centered columns={2}>
<Grid.Column className="home">
<Form className="forms" onSubmit={ handleSubmit }>
<Form.Field inline>
<Field
name="username"
component={renderField}
type="text"
placeholder="Username"
label="Username"
validate={[required]}
/>
</Form.Field>
<Form.Field inline>
<Field
name="email"
component={renderField}
type="email"
placeholder="Email"
label="Email"
validate={[required, email]}
/>
</Form.Field>
<Form.Field inline>
<Field
name="password"
component={renderField}
type="password"
placeholder="Password"
label="Password"
validate={[required, minValue7]}
/>
</Form.Field>
<Link to={'/signup2'}>
<Button type="submit">Save</Button>
</Link>
</Form>
</Grid.Column>
</Grid>
)
}
SignupForm = reduxForm({
form: 'form1'
})(SignupForm)
const mapStateToProps = (state, ownProps) => {
return {
userSignup: state.userSignup
}
}
const mapDispatchToProps = (dispatch) => {
return bindActionCreators({signup}, dispatch)
}
export default connect(mapStateToProps, mapDispatchToProps)(SignupForm)
Auch habe ich es versucht, wo ich const {handleSubmit} = props
tun und ändern Sie dann `` `onSubmit = {handleSubmit (this.props.signup)}
Warum wickeln Sie den Submit-Button in einem Redux-Router-Link? –
Also leitet es zum nächsten Formular um, sobald er –
erreicht hat. Sie möchten also, dass die 'Link' gleichzeitig ausgelöst wird, wenn Ihr Ereignishandler ausgelöst wird. Ich bin mir nicht sicher, was wirklich passieren wird, aber wäre nicht überrascht, wenn die Weiterleitung passiert, die dann den Handler ausschließt. Spitballing hier, aber erstellen Sie eine Komponente für jeden Assistenten Schritt - 'WizardStep1',' WizardStep2', etc ... Statt 'Link', Ihre Event-Handler könnten Daten aus dem Formular akzeptieren und basierend darauf bestimmen welchen Schritt sollte der aktuelle Schritt sein und den Zustand speichern. Dann könnte Ihre Methode 'render()' auf Ihrer Seite prüfen, welcher Schritt aktuell ist, und sie entsprechend rendern. –