Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数据进入服务响应,但显示';未定义';从它被称为-JavaScript | React的地方_Javascript_Reactjs_Api_Asynchronous_Axios - Fatal编程技术网

数据进入服务响应,但显示';未定义';从它被称为-JavaScript | React的地方

数据进入服务响应,但显示';未定义';从它被称为-JavaScript | React的地方,javascript,reactjs,api,asynchronous,axios,Javascript,Reactjs,Api,Asynchronous,Axios,我正在调用一个API,该API反过来会将数据返回给我。当我尝试将该数据存储在variable中,然后存储到console.log中时,结果是未定义。为什么会这样?如何解决这个问题 someService.js getItems: () => { axios.get('https://jsonplaceholder.typicode.com/users/') .then( response => { console.log(response.dat

我正在调用一个API,该API反过来会将数据返回给我。当我尝试将该数据存储在variable中,然后存储到console.log中时,结果是
未定义
。为什么会这样?如何解决这个问题

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;
    })
  }
case "GET_ITEM_LIST": {
    let data = getItemsAPI.getItems();
    console.log(data); //gives undefined
    return {
        ...state,
        items: data
    }
}
someReducer.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;
    })
  }
case "GET_ITEM_LIST": {
    let data = getItemsAPI.getItems();
    console.log(data); //gives undefined
    return {
        ...state,
        items: data
    }
}

在您的案例中,您将以异步方式从服务器获取API:

请尝试这样做
async/wait

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
          }
       }
       // ....

   }
}

在您的案例中,您将以异步方式从服务器获取API:

请尝试这样做
async/wait

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
          }
       }
       // ....

   }
}

您需要返回承诺并等待结果作为其异步。请注意axios之前的return,它返回您可以处理的承诺。(我正在用手机编辑,我想格式不好。如果它起作用,以后会更新)

getItems:()=>{
返回axios.get('https://jsonplaceholder.typicode.com/users/')
。然后(响应=>{
console.log(response.data);//给我一个包含10项的数组
返回响应数据;
})
}


然后,
等待getItems()
getItems()。然后()
在任何需要的地方

您需要返回promise并等待其异步结果。请注意axios之前的return,它返回您可以处理的承诺。(我正在用手机编辑,我想格式不好。如果它起作用,以后会更新)

getItems:()=>{
返回axios.get('https://jsonplaceholder.typicode.com/users/')
。然后(响应=>{
console.log(response.data);//给我一个包含10项的数组
返回响应数据;
})
}


然后,
等待getItems()
getItems()。然后()
在任何需要的地方

旁注:缩减器应该是纯函数,不应该有任何副作用,如网络请求。旁注:缩减器应该是纯函数,不应该有任何副作用,如网络请求