2017-11-21 10 views
2

完了時にPOSTリクエストをしていますが、コールバックを使用してユーザーを新しいページにリダイレクトしたいと思います。以下は私のonSubmitハンドラです。アクションクリエータでコールバックを使用する

onSubmit(values) { 
     console.log('before action'); 
     this.props.createPost(values,() => { 
      console.log('callback fired'); 
      this.props.history.push('/someotherpage'); 
     }); 
    } 

ここは私のアクションクリエイターです。

export function createPost(values, callback) { 
    const request = axios.post(`/api/create_post`, values) 
     .then(() => callback()); 

    return { 
     type: CREATE_POST, 
     payload: request 
    }; 
} 

コールバックが私を別のページにリダイレクトすることを期待していましたが、それは行いません。データはデータベースに送られますが、コールバックは起動しません。

+0

コンソールにエラーがありますか? – Timo

+0

は 'before action'ログではありません。補正。しばらくすると、これがポップアップします。 POST http:// localhost:3000/api/create_listing net :: ERR_EMPTY_RESPONSE – Alison

+0

とこれです。 createError.js:16 Uncaught(約束しています)Error:ネットワークエラー – Alison

答えて

1

コメントに追加したエラーメッセージによれば、HTTP呼び出しは失敗し、約束は拒否されます。その結果、.then()ハンドラが呼び出されることはありません。

.catch()ハンドラ経由でエラー処理を追加すると、(失敗した)呼び出し結果を処理できるはずです。

+0

ありがとう!...私はexpress.sendを私のexpress apiエンドポイントに含めませんでした。私はそれを入れ、コールバックは発射され、私のページをリダイレクトしました。 – Alison

関連する問題