Comment valider le textinput correclty? Je veux valider mon formulaire correctement avec la validation de formulaire personnalisée et après les erreurs d'affichage de validation dans le composant texte, mais comment? S'il vous plaît, les gars me montreront l'exemple! P>
3 Réponses :
Installer import React, { Component } from 'react';
import { View, Text, TextInput } from 'react-native';
import Snackbar from 'react-native-snackbar';
export default class LoginPasswordScreen extends Component {
constructor(props) {
super(props);
this.state = {
password: ''
}
}
validate = () => {
//include your validation inside if condition
if (this.state.password == "") {
() => {
setTimeout(() => {
Snackbar.show({
title: 'Invalid Credintials',
backgroundColor: red,
})
}, 1000);
}
}
else {
Keyboard.dismiss();
// navigate to next screen
}
}
render() {
return (
<View>
<TextInput
returnKeyType="go"
secureTextEntry
autoCapitalize="none"
autoCorrect={false}
autoFocus={true}
onChangeText={(password) => this.setState({ password })}
/>
<TouchableOpacity>
<Text onPress={this.validate}>Next</Text>
</TouchableOpacity>
</View>
);
}
}
Chaque champ, vous devez faire une comparaison et montrer le message d'erreur et, comme je le vois, il n'y a pas de validation de formulaire direct, même s'il existe une composante de formulaire disponible dans React Native. Dans un de mon projet natif de réact, j'ai ajouté une forme et plus tard en cliquant sur Soumettre, j'avais écrit une fonction de validation pour vérifier toutes mes entrées. Pour cela, j'ai utilisé une belle bibliothèque JavaScript- Library NPM- Validator P>
et pour montrer le message d'erreur, vous pouvez utiliser, griller, alerter ou snackbar p>
serait bien si vous fournissez des pensées ou un code sur la manière dont vous penseriez que cela peut être approché. Mais comme je l'ai fait était assez simple, sur mon état de composant, j'ai eu l'objet suivant: puis sur la TextInput pour le nom d'utilisateur, je voudrais d'abord lier sa valeur à par exemple, pour le nom d'utilisateur, vous voulez seulement être de longueur! = 0 et longueur <= 8 caractères, pour votre email, vous pouvez exécuter une réégyvette () avec l'e-mail Validation et également sa longueur, pour un mot de passe une logique différente, etc., après cela, je sauve simplement simplement l'état pour cette entrée de champ et s'il est valide ou non. Comme ceci: p> dans checkvalidation Je vérifie tous les champs de saisie et si chacun est valide, je définit Formvalid sur true.
Ce formelid serait par exemple, permettant à l'utilisateur de toucher le bouton "Connexion", sinon elle applique une opacité de 0,5 à elle et la désactive. P> Le reste que vous pouvez deviner, vient de jouer avec le variables de chaque champ à ce que vous voulez afficher et ce que vous n'êtes pas.
Dans un formulaire de registre, j'ai également ajouté une icône X ou une "tick" si le champ de texte d'entrée est OK ou non. Laissez votre imagination vous guider. P> espère que cela aide. P> p> .state.username.text code>, également, lors de Onchangetext, je viens de faire une simple validation du champ, si le formulaire est assez gros, vous pouvez avoir un commutateur
(fieldype) code> où vous avez Pour chaque champ, quel traitement vous souhaitez appliquer une validation aka. p>
onchangetext = {(texte) => {this.validateInput (texte, "nom d'utilisateur")}} code> (nom d'utilisateur serait l'entrée de formulaire sur l'objet d'état) p>
Pouvez-vous fournir une partie du code de ce que vous avez tenté?