функция обертки для axios - PullRequest
0 голосов
/ 04 марта 2019

Как сделать функцию-обертку для axios

Я хочу вернуть axios из функции, чтобы, если мой проект переключился на другой API выборки, это легко можно было сделать

Я что-то делаюкак это

 import axios from 'axios'
export function apiCall(){
    axios.defaults.headers.common = {
    "X-Requested-With": "XMLHttpRequest",
    "X-CSRFToken": "example-of-custom-header"
    };
    return axios

 }

и во всех действиях я использую что-то это

import apiCall from './somepath

function fetchContent(){
  return apiCall.get('http://localhost:3003/')
}

но я получаю TypeError: _ApiCall__WEBPACK_IMPORTED_MODULE_3__.default.get is not a function

Ответы [ 3 ]

0 голосов
/ 04 марта 2019

Чтобы использовать модуль оболочки Axios в том виде, как вы его определили, вам нужно вызвать apiCall как функцию, подобную следующей:

import apiCall from './somepath

function fetchContent(){
  /* Add () after apiCall */
  return apiCall().get('http://localhost:3003/')
}
0 голосов
/ 04 марта 2019

С этим кодом не так 2 вещи.

  1. Это должно быть apicCall().get, поскольку apiCall - это функция.
  2. Поскольку вы используете экспорт не по умолчанию, вы должны использовать import {apiCall} from './somepath'

Однако вот как я предлагаю вам сделать это:

import axios from 'axios';

axios.defaults.headers.common = {
    "X-Requested-With": "XMLHttpRequest",
    "X-CSRFToken": "example-of-custom-header"
};
export default axios;

Этовы можете сделать:

import axios from './somepath'

и затем использовать axios api как обычно, так как это будет тот же объект.

0 голосов
/ 04 марта 2019

Попробуйте return apiCall().get('...') - акцент на лишние скобки после apiCall()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...