数据进入服务响应,但显示';未定义';从它被称为-JavaScript | React的地方
我正在调用一个API,该API反过来会将数据返回给我。当我尝试将该数据存储在variable中,然后存储到console.log中时,结果是数据进入服务响应,但显示';未定义';从它被称为-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
未定义
。为什么会这样?如何解决这个问题
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()。然后()
在任何需要的地方 旁注:缩减器应该是纯函数,不应该有任何副作用,如网络请求。旁注:缩减器应该是纯函数,不应该有任何副作用,如网络请求