Данные поступают в Service Response, но показывают «неопределенное», откуда они называются - JavaScript |реагировать - PullRequest
0 голосов
/ 01 октября 2019

Я вызываю API, который в свою очередь возвращает мне данные. Когда я пытаюсь сохранить эти данные в переменной, а затем console.log, результат равен undefined. Почему это происходит? Как это исправить?

someService.js

  getItems: () => {
    axios.get('https://jsonplaceholder.typicode.com/users/')
    .then( response => {
         console.log(response.data); //gives me an array of 10 items
         return response.data;
    })
  }

someReducer.js

case "GET_ITEM_LIST": {
    let data = getItemsAPI.getItems();
    console.log(data); //gives undefined
    return {
        ...state,
        items: data
    }
}

Ответы [ 2 ]

1 голос
/ 01 октября 2019

Вам необходимо вернуть обещание и дождаться результата как его асинхронный. Обратите внимание, что возврат перед аксиосами, которые возвращают, обещает, что вы можете работать. (Я редактирую на мобильном телефоне и думаю, что форматирование плохое. Если это сработало, обновлю позже)

getItems: () => { return axios.get('https://jsonplaceholder.typicode.com/users/') .then( response => { console.log(response.data); //gives me an array of 10 items return response.data; }) }

Затем, await getItems() или getItems().then(), где вам нужно.

1 голос
/ 01 октября 2019

В вашем случае вы выбираете API с сервера как asynchronous:

Попробуйте async/await вот так:

export default {
   fetch: async (state, { type, payload }) => {
       // ....
       case "GET_ITEM_LIST": {
          let data = await getItemsAPI.getItems();
          console.log(data); // you will see data here
          return {
             ...state,
             items: data
          }
       }
       // ....

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