Всем доброго вечера, хотелось бы узнать можно ли прокидывать store из redux'a в axios, и законно ли это?
Небольшой рабочий пример, все работает, но на сколько это правильно?
//index.js
...
const store = configureStore();
api.store = store;
...
//api.js - моя обертка над axios
import axios from 'axios'
import {addFlashMessage } from '../actions/flashMessageActions'; //этот метод для dispatch'a
let api = {};
axios.defaults.baseURL = 'http://srv-t-01:35561/';
//эта штука срабатывает при каждом ответе с сервера
axios.interceptors.response.use(
function (response) {
//если все хорошо, пусть идет дальше по цепочке
return response;
},
//если завершилась с ошибкой, то ловим ее
function (error) {
const {status, data} = error.response;
let text;
//примерная обработка кодов ошибок
switch (status) {
case 500:
text = 'Внутренняя ошибка сервера. Обратитесь к администратору.'
break;
case 401:
text = 'Ошибка авторизации. Пожалуйста войдите в систему.'
break;
default:
text = data.error_description || data.message;
break;
}
this.store.dispatch(addFlashMessage({ type: 'danger', text})) //здесь мы добавляем событие в store, после чего компонент подхватит его и отрисует
return window.Promise.reject(error); //отдаем ошибку дальше по цепочке
}.bind(axios));
api = axios;
export default api;