reactjs - 从 reactJS 中的 axios 函数获取返回值
问题描述
我是 reactJS 新手,我的问题是我想为我的变量分配一个从 axios 函数返回的值。当我这样做时,我得到了 u1 的未定义值。
function getUsername(userid){
var user = ''
axios.post('/api/getuserdata' , {_id:userid}).then(res=>{
console.log(res.data)
const userdata = res.data[0]
user = userdata.username
}).catch(err=>{
console.log(err)
})
return user
}
const u1 = getUsername(id)
解决方案
您的代码不起作用的原因是POST
由处理的请求axios
是异步的,您的getUsername
函数不会等待该请求解决并user
在调用后立即返回。最简单的解决方案是让你的getUsername
异步并在另一个异步函数中调用它,或者如果你想将POST
请求返回的结果用于其他一些东西,你可以将它存储为state
in React
,这样会更好。你可以使用这样的东西:
const getUsername = async (userid) => {
try {
const response = await axios.post("/api/getuserdata", { _id: userid });
const userdata = response?.data?.[0]?.username || "";
return userdata;
} catch (error) {
console.log(`error`, error);
}
};
// in another function
const doSomethingWithUsername = async (id) => {
const username = await getUsername(id);
// other stuff..
}
推荐阅读
- sql - 从 Oracle 数据库中的两个表中查询
- regex - '\' 后面跟一个非转义字符有什么作用?
- xamarin - 编译错误尝试通过 Xamarin Android 绑定项目绑定 ABBYY RTR SDK.AAR 文件
- excel - 在 excel 中搜索部分匹配项
- reactjs - 预期的模拟函数已被调用但未被调用
- javascript - 下拉 window.onclick javascript 仅适用于一个菜单
- javascript - AJAX查询:加载页面,成功前
- javascript - 添加子域后 Express 不再符合条件的路由
- javascript - 从 fetch 请求中更新了 setState Array
- linux - Jenkins Build 在构建后任务中挂起