【发布时间】:2021-12-31 11:42:27
【问题描述】:
我有一个具有以下功能的 api.js 文件:
export const login = (loginUserName, loginPassword, setUser) => {
axios({
method: 'post',
data: {
username: loginUserName,
password: loginPassword
},
withCredentials: true,
url: '...........'
}).then(async (res) => {
if (res.data.loggedIn === true) setUser(loginUserName);
});
};
我的 useState 挂钩如下所示:
const [ user, setUser ] = useState({});
我想知道,而不是像我一样从我的登录组件发送 setUser 函数:
login(userName,password,setUser);
它在另一个文件中,我如何从函数外部执行它,如下所示:
setUser(login(userName,password));
因此,如果该函数确实检索到了我想要的信息,它将返回它(在本例中为用户名),如果不是,它会将用户设置为未定义之类的。
我尝试过使用
export const login = (loginUserName, loginPassword) => {
axios({
method: 'post',
data: {
username: loginUserName,
password: loginPassword
},
withCredentials: true,
url: '............'
}).then(async (res) => {
if (res.data.loggedIn === true) return loginUserName;
});
};
但我在使用异步功能时遇到了一些困难。 似乎由于某种原因它不会返回该信息。 如果我不得不猜测它只为 axios 函数或其他东西返回它.. 如何获得我正在寻找的效果,最佳做法是什么?发送“setUser”函数是否被认为是一种好习惯,还是尝试摆脱它更好?
【问题讨论】:
标签: javascript reactjs ajax asynchronous axios