繁体   English   中英

数据来自服务响应,但从调用位置显示“未定义” - JavaScript | 反应

[英]Data coming in Service Response but showing 'undefined' from where it is called - JavaScript | React

我打电话给 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
    }
}

对于您的情况,您从服务器获取 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
          }
       }
       // ....

   }
}

您需要返回 promise 并等待结果作为其异步。 注意 axios 之前的 return ,它返回您可以处理的 promise。 (我在手机上编辑,我猜格式不好。如果有效,稍后会更新)

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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM