Node.js React.JS函数return未返回
我有一个名为get的函数,它从本地restapi获取数据Node.js React.JS函数return未返回,node.js,reactjs,Node.js,Reactjs,我有一个名为get的函数,它从本地restapi获取数据 const get = () => { axios.get(URL).then((response) => { console.log(response) return response; }).catch((error) => { console.log('ERROR', error) return error }) } 然后在
const get = () => {
axios.get(URL).then((response) => {
console.log(response)
return response;
}).catch((error) => {
console.log('ERROR', error)
return error
})
}
然后在App.js中我使用了这个函数
useEffect(() =>{
const response = Data.get();
console.log(response)
setPersons(response.data)
}, []);
get函数中的console.log(response)
返回RESTAPI数据,而useffect()
未定义日志记录
有人知道它为什么不返回相同的吗?看起来您在
get()
函数中缺少了一条return语句。应该是这样的:
const get = () => {
return axios.get(URL).then((response) => {
console.log(response)
return response;
}).catch((error) => {
console.log('ERROR', error)
return error
})
}
const get = (success, error) => {
axios.get(URL).then((response) => {
console.log(response)
success(response)
}).catch((e) => {
console.log('ERROR', e)
error(e)
})
}
这将导致Data.get()
从axios返回承诺
然后,您需要等待返回的承诺得到解决,然后才能从App.js登录
您可以使用完成此操作。然后:
useEffect(() =>{
Data.get()
.then(response => {
console.log(response)
setPersons(response.data)
});
}, []);
或异步函数:
useEffect(async () =>{
const response = await Data.get();
console.log(response)
setPersons(response.data)
}, []);
axios请求是异步的。调用Data.get
后,代码将继续下一行,而无需等待响应。您可以通过允许get
函数接受回调来修复此问题。大概是这样的:
const get = () => {
return axios.get(URL).then((response) => {
console.log(response)
return response;
}).catch((error) => {
console.log('ERROR', error)
return error
})
}
const get = (success, error) => {
axios.get(URL).then((response) => {
console.log(response)
success(response)
}).catch((e) => {
console.log('ERROR', e)
error(e)
})
}