Ich verwende die offiziellen Semantic UI React Komponenten, um eine Webanwendung zu erstellen. Ich habe ein Formular auf meiner Anmeldeseite, das ein E-Mail-Feld, ein Passwortfeld und ein Bestätigungsfeld enthält.Formularvalidierung mit Semantic-UI-React
import {Component} from 'react';
import {Button, Form, Message} from 'semantic-ui-react';
import {signUp} from '../../actions/auth';
class SignUp extends Component {
constructor(props) {
super(props);
this.handleSubmit = this.handleSubmit.bind(this);
}
handleSubmit(e, {formData}) {
e.preventDefault();
//
// Potentially need to manually validate fields here?
//
// Send a POST request to the server with the formData
this.props.dispatch(signUp(formData)).then(({isAuthenticated}) => {
if (isAuthenticated) {
// Redirect to the home page if the user is authenticated
this.props.router.push('/');
}
}
}
render() {
const {err} = this.props;
return (
<Form onSubmit={this.handleSubmit} error={Boolean(err)}>
<Form.Input label="Email" name="email" type="text"/>
<Form.Input label="Password" name="password" type="password"/>
<Form.Input label="Confirm Password" name="confirmPassword" type="password"/>
{err &&
<Message header="Error" content={err.message} error/>
}
<Button size="huge" type="submit" primary>Sign Up</Button>
</Form>
);
}
}
Nun bin ich auf der regulären Semantic UI-Bibliothek verwendet, die eine Form Validation addon hat. Normalerweise würde ich die Regeln, wie dies in einem separaten JavaScript-Datei definiert
$('.ui.form').form({
fields: {
email: {
identifier: 'email',
rules: [{
type: 'empty',
prompt: 'Please enter your email address'
}, {
type: 'regExp',
value: "[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?",
prompt: 'Please enter a valid email address'
}]
},
password: {
identifier: 'password',
rules: [{
type: 'empty',
prompt: 'Please enter your password'
}, {
type: 'minLength[8]',
prompt: 'Your password must be at least {ruleValue} characters'
}]
},
confirmPassword: {
identifier: 'confirmPassword',
rules: [{
type: 'match[password]',
prompt: 'The password you provided does not match'
}]
}
}
});
Gibt es eine ähnliche Methode unter Verwendung der Semantic UI Reagieren Komponenten für die Form der Validierung? Ich habe die Dokumentation ohne Erfolg durchsucht, und es scheint keine Beispiele für die Validierung mit dieser Semantic UI React-Bibliothek zu geben.
Muss ich stattdessen jedes Feld von Hand in der handleSubmit
Funktion validieren? Was ist der beste Weg, um dieses Problem zu beheben? Danke für die Hilfe!