2017-09-04 30 views
0

を使用してリダイレクトやあみんな私はそうの機能を持っている:はReduxのReduxの-サンク

function dispatchSignup(username, password) { 
    return function(dispatch) { 
    const newUser = {username: username, password: password} 
    axios.post('/signup', newUser).then(() => { 
     return dispatch(signupAction) 
    }).then(() => { 
     return dispatch(push('/')) 
    }).catch((error) => {console.log(error)}) 
    } 
} 

この関数は、最初の登録には、自分のサーバーにリクエストを送信しています。成功した場合、 '.then'が実行され、signupActionが送出されます。私はこの後、別の '.then'を呼び出します。このsignupActionがディスパッチされた後にのみ実行され、ユーザーは '/'にリダイレクトされます。私のホームページ。私が抱えている問題は、彼らがサインアップしてURLがプッシュされたということですが、実際にはコンポーネントを '/'にレンダリングしていません。ここで何が起きてるの?私は本当にわからないが、彼らはお互いをブロックしているかのようだ。 Reduxサンクは私が思った非同期なので、私が呼び出す2番目のアクションは、最初のディスパッチが成功するまでディスパッチされません。

ご協力いただきありがとうございます。

答えて

0

私はその後、別のこのsignupActionが

この仮定が間違っている派遣された後にのみ実行する必要のある、この後「.then」と呼びます。 dispatch関数は、Promiseではなく、送出されるアクションを返します。 signupActionもredux-thunk(アクションを返す)を使用しているとしたら、push('/')への呼び出しがすぐに起こっていて、登録手続きが完了するのを待っていない理由を説明します。

関連する問題