2017-11-19 24 views
1

私は通常、角張った開発者であり、反応しています。この質問が単純だと思われるのなら、どうか言いなさい。 成功は成功した後でもPROMISEのCATCHステートメントを実行します

は、私はそのURLフェッチ罰金を見ることができるネットワーク]タブで、単純なPROMISE

return axios(`team/${this.state.teamId}/player`, this.state) 
     .then((response) => { 
      console.log('formSubmit success'); 

      this.store.dispatch({ 
       type:  constants.PLAYER_UPDATE, 
       payload: response.data.user, 
      }); 
      return false; 

     }) 
     .catch((error) => { 
      console.error('Error', error.response.data); 
      this.setState({ 
       saveStatus: error.response.data.message 
      }); 
      return Promise.reject(error) 
     }); 

を持っています。 store.dispatchは、コンソールに表示されるので、呼び出されます。

同時に、catchステートメントのコードを呼び出しています。 私のコンソール出力は

formSubmit success     Player.js:127 
Store BEFORE | PLAYER_UPDATE   Store.js:76 

Uncaught (in promise) TypeError: Cannot read property 'data' of undefined 
at Player.js:135 

すべてが成功する場合、なぜそれが)(CATCHの後に起こっているのですか?私はさらに返信文を末尾に追加しましたthis.store.dispatch

助けてください。

答えて

0

thenにあるエラーをキャッチします。エラーを予期して捕捉したい場合は、おそらくthen関数で2番目のコールバックを使用します。

return axios(`team/${this.state.teamId}/player`, this.state) 
     .then((response) => { 
      console.log('formSubmit success'); 

      this.store.dispatch({ 
       type:  constants.PLAYER_UPDATE, 
       payload: response.data.user, 
      }); 
      return false; 

     }, (error) => { 
      console.error('Error', error.response.data); 
      this.setState({ 
       saveStatus: error.response.data.message 
      }); 
      return Promise.reject(error) 
     }); 
+1

は私のブラケットが台無しだと私は予告をdidntのであってもよいし、あなたのケースでは、

return axios.get('endpoint') .then(successCallback, errorCallback); 

OR:あなたはこのような何かを行う必要があります。しかしそれが私の意図でした。返信いただきありがとうございます。コードを変更して試してみましょう。 – Sallu

関連する問題