2017-10-11 8 views
0

私は還元して、アプリケーションで作業するのは初めてです。私のサインインとサインアップ機能は、いくつかの不正なアクションがディスパッチされ、コードのどの部分がそれをしているのかを特定できないという事実を除いて、ほとんどうまく機能しています。私はいくつかのコードスニペットを投稿しています。不正行為が正しく送信されていません

2番目のゴーストLOGIN_FULFILLEDリクエストを見てください。私はまだDBにそのユーザーがいないので、これは発生しません! Screenshot for the actions and state transitions

ログインアクションクリエイター:

import request from 'axios'; 
import thunk from 'redux-thunk'; 
import store from '../store' 

export function loginFunc(username, password) { 
return { 
type: 'LOGIN', 
username, 
password,  
payload : request 
      .post("http://localhost:5000/users/authenticate", 
       { 
        username : username, 
        password: password 
       } 
      ) 
      .then(function (response) { 
       console.log(response); 
       if (response.data.message === "user_found")      
       store.dispatch({type: 'LOGIN_FULFILLED', payload : response.data.results}); 
       else 
       store.dispatch({type: 'LOGIN_REJECTED', payload : "user_not_found"}); 
      }) 
      .catch(function (error) { 
       console.log(error); 
       store.dispatch({type: 'LOGIN_REJECTED', payload : error}); 
      }) 
    } 
} 
+0

ねえ。ディスパッチされた2つのアクションがあります:あなたが共有したスクリーンショットに 'LOGIN_REJECTED'と' LOGIN_FULFILLED'があります。 –

+0

しかし、それはif - elseループの中にあるので、サーバからの応答メッセージに基づいて起動する必要があります。 –

+0

redux-thunkを使用していますか?私はそうは思わない。あなたは完全なアクションクリエイター機能を投稿できますか? –

答えて

0

Reduxのサンクミドルウェアは、関数の代わりに、アクションを(official guideで書かれたもの)を返すアクションクリエイターを書くことができます。

サンクを使用するには、いくつかの変更を加える必要があります。 storeをインポートしてgetStatedispatchを使用する場合、引数callbackのように入力する必要はありません。このdispatch

return function(dispatch, getState) 

getStatestore.dispatchstore.getStateと同じです。

import request from 'axios'; 
 

 
export function loginFunc(username, password) { 
 
    return function(dispatch) { 
 
    request 
 
     .post("http://localhost:5000/users/authenticate", { 
 
     username: username, 
 
     password: password 
 
     }) 
 
     .then(function(response) { 
 
     console.log(response); 
 
     if (response.data.message === "user_found") 
 
      dispatch({ 
 
      type: 'LOGIN_FULFILLED', 
 
      payload: response.data.results 
 
      }); 
 
     else 
 
      dispatch({ 
 
      type: 'LOGIN_REJECTED', 
 
      payload: "user_not_found" 
 
      }); 
 
     }) 
 
     .catch(function(error) { 
 
     console.log(error); 
 
     dispatch({ 
 
      type: 'LOGIN_REJECTED', 
 
      payload: error 
 
     }); 
 
     }) 
 
    } 
 
}

関連する問題