在应用程序文件中,我有一个名为 refreshList 的函数,当我更新站点上数据库中的内容时,我会调用它,以便更新状态并刷新所有组件。
但是当我调用这个函数时我注意到了一些很奇怪的事情
const refreshList = () => {
userDetailsFunc (userDetails.code);
};
const userDetailsFunc = (cookiesName) => {
if (cookiesName) {
axios.get (`api / UserDetails? code = $ {cookiesName}`)
.then ((user) => {
setUserDetails (user.data);
}
它不会刷新列表并保留旧的详细信息,但如果我再次单击,它将获得以前的详细信息,而不是我更新的内容。
我想看看并写了
console.log (user.data);
而且我看到这是他在axios中获取的内容
但是如果我刷新它会得到好的内容,为什么只有我刷新页面它才能正常工作,但是当我通过函数调用它时它不会改变。
有人知道我错在哪里吗?
答案 0 :(得分:2)
如果您不了解async/await
promise
主题,这是一种非常常见的行为。
试试这个代码:
const refreshList = async () => {
await userDetailsFunc (userDetails.code);
};
const userDetailsFunc = async (cookiesName) => {
if (cookiesName) {
const user = await axios.get (`api / UserDetails? code = ${cookiesName}`)
setUserDetails(user.data);
}
}
答案 1 :(得分:0)
我纠正了错误。 在此之前我写了一行编辑用户的代码 在那之后我写了refreshList
然后在数据库中更新之前它来到了refreshList。
axios.post('api/EditDetails', obj)
refreshList();
当我把代码改成
axios.post ('api / EditDetails', obj) .then (() => {
refreshList ();
});
成功了