2017-02-19 20 views
0

Итак, наряду с Redux-Form я использую axios и thunk в качестве промежуточного программного обеспечения, и когда я нахожусь в функции onSubmit (loginUser) и звоню AJAX с помощью Axios. К сожалению, когда я хочу сообщить, что переданные учетные данные моего пользователя недействительны, и вызывать SubmissionError, чтобы сигнализировать о том, что функция onSubmit не удалась, и, следовательно, получить ошибки, отображаемые в форме, которую я получаю «Невлан (в обещании)».Redux-Form v6.5.0 SubmissionError in onSubmit Функция не проходит Вдоль ошибок поля/_error, давая «Неволе (в обещании)» Ошибка в консоли

Я читал из других тем, что, возможно, мне придется возвратить обещание в какой-то момент, но я не совсем уверен, как это реализовать (если это даже проблема).

В настоящее время используется версия Redux-Form 6.5.0. Любая помощь будет оценена по достоинству.

import axios from 'axios'; 
import { SubmissionError } from 'redux-form'; 

export function loginUser({ email, password }) { 
    return function(dispatch) { 
     axios.post(`${API_URL}/authenticate`, { email, password }) 
     .then(response => { 
     console.log('status is: ', status, ' response is: ', response); 
     if(response.data.token){ 
      cookie.save('token', response.data.token, { path: '/' }); 
      dispatch({ type: AUTH_USER }); 
      browserHistory.push('/'); 
     } else { 
      if(response.data.success === false) { 
      var errObj = { email: "Invalid email and password combo",  _error: "That email and password combination did not work. Please try  again."}; 
      throw (errObj) 
      } 
     } 
     }) 
     .catch((error) => { 
     throw(new SubmissionError(error)); 
     }) 
    } 
    } 

Ошибка в консоли:

Uncaught (in promise) > 
SubmissionError 
errors 
: 
Object 
message 
: 
"Submit Validation Failed" 
name 
: 
"SubmissionError" 
stack 
: 
"SubmissionError: Submit Validation Failed↵ at eval (eval at  <anonymous> (http://localhost:8080/bundle.js:14:22671),  <anonymous>:94:1297)" 
__proto__ 
: 
ExtendableError 
+0

Можете ли вы поделиться тем, как выглядит код для представления формы в вашем прецеденте? – jakee

ответ

0

Для тех из вас, интересно, я использовал «решительность» и «Отклонить» с SubmissionError внутри функции отклонять() как таковой (также обратите внимание на новый Promise part наверху):

export function registerUser({ email, password }) { 
    return new Promise((resolve, reject) => { 
    axios.post('http://localhost:8088/api/users', { email: email, password: password }) 
    .then(response => { 
     console.log('response is: ' , response, 'response.data is: ', response.data, 'response.code is: ', response.code); 
     if(response.data.success){ 
     console.log('registerUser response.data.success is true') 
     cookie.save('token', response.data.token, { path: '/' }); 
     store.dispatch({ type: AUTH_USER }); 
     browserHistory.push('/'); 
     resolve(); 
     } else { 
     if(response.data.code === 11000){ //duplicate email 
      console.log('data code = 11000') 
      var errObj = new SubmissionError({_error: 'User registration failed, email already exists.' }) //need to add store dispatch for failed user registration (for form feedback) 
      reject(errObj); 
     } else if (response.code === 2) { 
      console.log('response.code = 2') 
      var errObj = new SubmissionError({ email: 'Invalid email pattern.' }) 
      reject(errObj); 
     } 
     } 
    }).catch((error) => { 
     console.log('error is: ', error) 
     //errorHandler(store.dispatch, error, AUTH_ERROR)  
     if(error instanceof SubmissionError) reject(error); 

    }); 
    }) 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^