为什么当我通过一个函数调用 axios 时它没有更新?

时间:2021-06-15 12:01:04

标签: reactjs axios

在应用程序文件中,我有一个名为 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中获取的内容

但是如果我刷新它会得到好的内容,为什么只有我刷新页面它才能正常工作,但是当我通过函数调用它时它不会改变。

有人知道我错在哪里吗?

2 个答案:

答案 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 ();
         });

成功了