2017-09-05 2 views
0

Je cherchais une validation MOBX sur un champ de saisie, mais je n'ai pas pu trouver quoi que ce soit, j'ai trouvé "MobX-input" qui nécessite un formulaire mais je n'ai aucun formulaire. un autre que j'ai trouvé était "mobx-react-form" avec ValidatorJs qui utilise encore la forme. n'importe quel indice ou exemple serait apprécié. Je veux juste être capable de l'utiliser sur le champ d'entrée simpleReact - Mobx Validation input Champ

<Input placeholder="FirstName" type="text" 
defaultValue={Contact.FirstName} onChange={(e) => handler(e)} /> 

Répondre

1

validation simple est assez facile de créer vous-même avec MOBX. Pour un seul champ comme celui-ci, une méthode simple pour valider la fonction pourrait ressembler à ceci:

Dans le composant nous avons un champ d'erreur qui montre seulement si l'entrée a été soumise (qui pourrait être déclenchée par un bouton poussoir ou quel que soit)

return <div> 
<input placeholder="FirstName" type="text" 
defaultValue={Contact.FirstName} onChange={(e) => handler(e)} /> 
{submitted && <span className="error-message">{Contact.FirstNameError}</span>} 
</div>; 

Dans la classe observable (je le style non-décorateur), nous définissons le champ comme observable, et une classe de message d'erreur comme une valeur calculée.

class Contact { 
    constructor() { 
    extendObservable({ 
     submitted: false, 
     FirstName: observable(), 
     FirstNameError: computed(() => { 
      if(this.FirstName.length < 10) { 
      return 'First name must be at least 10 characters long'; 
      } 
      // further validation here 
      return undefined; 
     }) 
    }) 
    } 

} 

Vous pouvez facilement ajouter une valeur calculée hasError supplémentaire qui vient vérifie si FirstNameError a une valeur.

Cette méthode s'adapte à quelques entrées. Si vous commencez à en avoir plusieurs, alors vous voudrez regarder dans une abstraction comme une bibliothèque tierce ou quelque chose que vous écrivez vous-même pour gérer vos validations. Vous pouvez écrire une fonction pour générer les propriétés calculées dont vous avez besoin en fonction d'une petite configuration.