2017-04-21 14 views
4

我有一個https://github.com/svrcekmichal/redux-axios-middleware的問題。把error error攔截器放在redux-axios-middleware上

我想設置攔截器響應(錯誤)。但無法成功設置。

這裏是我的代碼:

function interceptorResponse({ dispatch, getState, getAction }, response) { 
    console.log(response); 
} 

export const client = axios.create({ 
    baseURL: API_URL, 
    headers: { 
     Accept: 'application/json', 
    }, 
}); 

export const clientOptions = { 
    interceptors: { 
     request: [interceptorRequest], 
     response: [interceptorResponse], 
    }, 
}; 

響應是否200console.log(response)只響應。我如何將它設置爲接受錯誤響應?

我已經嘗試設置這樣的

function interceptorResponse({ dispatch, getState, getAction }) { 
    return response => response.data, (error) => { 
     const meta = error.response.data.meta; 

     const { code, status } = meta; 

     console.log(meta); 
    }; 
} 

,但仍然沒有顯示任何東西。

任何soluion?

回答

1

下面是一個例子使用與ES6:

import axios from 'axios' 
import axiosMiddleware from 'redux-axios-middleware'  

const options = { 
     // not required, but use-full configuration option 
     returnRejectedPromiseOnError: true, 
     interceptors: { 
      request: [ 
       ({ getState, dispatch }, config) => { 
        // Request interception 
        return config 
       } 
      ], 
      response: [ 
      { 
       success: ({ dispatch }, response) => { 
       // Response interception 
       return response 
       }, 
       error: ({ dispatch }, error) => { 
       // Response Error Interception 
       return Promise.reject(error) 
       } 
      } 
      ] 
     } 
}  
export default axiosMiddleware(axios, options) 

注意,所創建的中間件應該傳遞給createStore()