Можно ли вообще указать обратный вызов, чтобы обернуть ответ? - PullRequest
0 голосов
/ 18 октября 2018

Поэтому я пытаюсь разработать компонент панели поиска в приложении React, в котором вы можете ввести фамилию пользователя, и этот запрос перейдет в API Behance и запросит данные этого пользователя.

Язастрял на этом:

axios
  .get(API_URL + 'users?q=' + 'matias' + '&client_id=' + API_KEY + '&callback=')
  .then(response => {
    console.log(response);
  })
  .catch(error => {
    console.log(error);
    alert(error.message);
  });

Я попытался обернуть вышеупомянутое в const userSearch = () => {}, но это уводит меня на шаг дальше от моей цели.С учетом вышесказанного я действительно получаю 200 статусов, но есть проблема с CORS.Я просто не могу собрать обратный вызов, которого нет undefined, не говоря уже о том, что это реализация панели поиска, поэтому мне придется реорганизовать вышеприведенное.Я просто хотел увидеть возвращенные данные.

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Итак, я реорганизовал свой код axios и все еще получал ошибки CORS, но после прочтения нескольких блогов в Интернете сказал, что с fetch() и jQuery вы можете обойти это, в частности эту статью SO: Загрузка данных из Behance API в компонент React

Я фактически продублировал реализацию Yasir следующим образом:

import $ from 'jquery';
window.$ = $;

const API_KEY = '<api-key>';
const ROOT_URL = `https://api.behance.net/v2/users?client_id=${API_KEY}`;

export const FETCH_USER = 'FETCH_USER';

export function fetchUser(users) {
  $.ajax({
    url: `${ROOT_URL}&q=${users}`,
    type: 'get',
    data: { users: {} },
    dataType: 'jsonp'
  })
    .done(response => {})
    .fail(error => {
      console.log('Ajax request fails');
      console.log(error);
    });

  return {
    type: FETCH_USER
  };
}

И, конечно же, ошибки CORS больше нет, и я получаю обратноданные пользователей в моей сети> вкладки предварительного просмотра.Не очень элегантно, но иногда вы просто пытаетесь решить проблему, и в конце концов.

0 голосов
/ 18 октября 2018

Одна из самых приятных вещей в Axios - это разделение между аргументами запроса.Например, URL должен быть только URL: API_URL + '/ users'.Параметры, которые вы хотите передать, должны быть отправлены как объект.Обещание Аксиос, это обратный вызов, который вы ищете.Поэтому ваш запрос должен выглядеть так:

axios.get(API_URL + 'users', {
   params: {
      q: 'matias',
      client_id: API_KEY,
   }
})
.then(response => {
   - success callback actions -
 })
.catch(error => {
   - error callback actions -
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...