2017-01-26 1 views
0

Ich habe Benutzername Field, die Fehlermeldung angezeigt wird, wenn der Benutzer nicht auf dem Server nach der Unschärfe vorhanden ist. Ich kann nicht scheinen, die neuesten Requisiten für Redux-Form nach dem Rendern der Komponente abzurufen. Ich muss etwas tun, wie:Verwenden des Status zu bestimmen, ob Feld ungültig ist

export const asyncLogin = (values, dispatch, props) => { 
    return new Promise((resolve, reject) => { 
     const errors = {}; 
     if (!values.username || _.isEmpty(props.emailVerify)) { 
      errors.username = 'Invalid username!'; 
     } 
     resolve(errors); 
    }); 
}; 
+0

Können Sie mehr Details über das Thema geben? Es ist nicht klar, was du machen willst. – viktarpunko

+0

Ist das Problem, dass Sie reduc-form-Requisiten überhaupt nicht abrufen können, oder dass Sie sie nicht asynchron in Ihrem Versprechen abrufen können? Möchten Sie innerhalb Ihres Versprechens den aktuellen Wert der Requisiten oder den Wert zum Zeitpunkt der Zusage? –

+0

Ich kann die Requisiten abrufen, aber die neuen Requisiten werden nicht zurückgegeben, wenn die Komponente erneut gerendert wird (ich verwende asyncValidate von redux-form). Wie ich eine Aktion abschicke, wenn das Feld unscharf ist, in dem ich das Formular benötige, um die neuen Requisiten abzurufen, wenn die Komponente erneut gerendert wird. Der Fall besteht darin, eine Aktion zu senden, um zu überprüfen, ob die E-Mail vom Server existiert, und dann die neuen Requisiten zu verwenden, um die korrekte Fehlermeldung anzuzeigen –

Antwort

0

Ok eine alternative Möglichkeit ist api Anfrage zu senden, um den Benutzernamen zu bestätigen, da ich nicht die aktualisierten Requisiten durch asyncLogin Funktion erhalten können. Ich bin nicht sicher, ob dies der Weg sein sollte, da ich Redux-Saga-Middleware verwende, um ähnliche Aktionen zu versenden, um den Laden zu aktualisieren, deshalb versuchte ich, das Feld des Benutzernamens durch aktualisierte Requisiten zu validieren. Eine ähnliche Frage wurde zuvor Redux form - how to pass UPDATED props to validation function? veröffentlicht. Falls jemand ein ähnliches Problem hier konfrontiert ist, wie ich meine Codes strukturieren (Jeder Vorschlag, wie ich meine Codes improvisiert oder strukturieren sind willkommen):

// validations/index.js 
import * as api from '../services/api'; 

export const asyncLogin = (values) => { 
    return new Promise((resolve, reject) => { 
     api.appendDomain({username: values.username}).then(email => { 
      api.emailVerify({email}).catch(err => { 
       const errors = {}; 
       errors.username = 'Invalid username!'; 
       resolve(errors); 
      }); 
     }).catch(errors => { 
      reject(); 
     }); 
    }); 
}; 

// components/loginForm.js 
const LoginForm = (props) => (
    <div className="auth-form-content"> 
     <form> 
      <Field name="username" 
       component={UsernameField} 
       appendDomain={props.appendDomain} 
       emailVerify={props.emailVerify} 
       action={props.dispatch} 
       usernameInputVerify={true} 
       placeholder="Hark, who goes there!" /> 
      <Field name="password" component={PasswordField} placeholder="What's the password?" /> 
      <button type="submit" className="waves-effect waves-light btn-large light-blue accent-4" disabled="disabled">Beam me up, Scotty.</button> 
     </form> 
    </div> 
); 

export default reduxForm({ 
    form: 'login', 
    asyncBlurFields: ['username'], 
    asyncValidate: asyncLogin 
})(LoginForm); 
Verwandte Themen