当前位置: 首页 > 面试题库 >

SetState不适用于服务器中的数据

宋俊艾
2023-03-14
问题内容

嗨,我正在用React钩子编程一个页面,并且试图将从服务器获取的数据设置为状态。怎么它不起作用。我从服务器获取数据,但无法将其映射到状态。任何想法可能是什么问题?

const [workouts, setWorkouts] = React.useState([]);
useEffect(() => {
        apiGet(fitnessaryEndPoints.workouts.getAllWorkouts)
            .then(
                response => {
                    setWorkouts([...workouts, response.data])
                    console.log(response)
                    console.log(workouts)

                }
            ).catch(
            error => {
                console.log(error)
            }
        )
    }, [])

来自服务器的数据


问题答案:

setWorkouts 是async方法,因此您将无法在其下获取更新的数据。

setWorkouts([...workouts, response.data])
console.log(workouts) //<--- this will not reflect the updated data

否则您的代码是好的,如果您循环并显示它,它将反映在DOM中

运行下面的代码片段,并检查HTML和console两者,这将清除流程。

const { useState , useEffect } = React;



const App = () => {



  const [users,setUsers] = useState(['Vivek' , 'Darsh']);



  useEffect(() => {

    setTimeout(() => {

      setUsers([...users, "Vivan" , "Darshita"]);

      console.log(users);

    },2000);

  },[]);



  return (

    <div>

      { users.map(user => <p>{user}</p>) }

    </div>

  );

}



ReactDOM.render(<App />, document.getElementById('react-root'));


<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.8.4/umd/react.production.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.4/umd/react-dom.production.min.js"></script>

<div id="react-root"></div>


 类似资料:
  • 我正试图用glassFish 4.1.1和非常简单的HelloWorld服务在IntelliJ上开发一个RESTful服务,但我不明白为什么它不起作用。根据他们的教程,我根据需要配置了IntelliJ IDEA- https://www.jetbrains.com/help/idea/creating-and-running-your-first-restful-web-service.html#

  • 我正在尝试使用泽西岛的JavaScript SSE。我的资源中有以下代码。我在Java7和Tomcat 7上托管。我没有收到任何错误。但我也没有在页面上看到数据。 我调用发布数据。它确实显示信息。但客户什么都没有。在Firefox中,我确实看到事件多次触发。 这是我使用的参考。https://jersey.java.net/documentation/latest/sse.html 我的Index

  • 这很有效 app@[服务器:/u01/主页/apli/app/trx/appS\u appS/appS\u appS/日志]:/ IBM/AIX RISC System/6000的TNS Ping实用程序:版本10.2.0.4.0-2015年9月8日01:01:57生产 版权所有(c)1997、2007,Oracle。保留所有权利。 使用的参数文件: /u01/home/app/oracle/pr

  • 我们正在公司迁移使用Java1.7的web应用程序。然后,我们选择使用JDK 17和Payara服务器的最新稳定版本(我们已经使用Glassfish),但是,当在NetBeans上链接服务器时,服务器属性中似乎没有选择Java 17 LTS平台。有人经历过这种情况吗?

  • 问题内容: 我是android编程的新手,并尝试在此示例程序中使用webservice: 我使用Android 4.1,而我的IDE是Eclipse Juno。我认为编程部分还可以,但是可能存在连接问题。 但是,我收到此错误: 那么可能是什么问题呢? 问题答案: 您不能在主线程上执行网络操作。结帐:http : //developer.android.com/reference/android/o

  • 我尝试按照Spring入门指南“使用Spring MVC提供Web内容”,该指南除了使用Maven之外还使用了Spring Boot和Gradle。我为Eclipse安装了Gradle插件。 我希望使用Eclipse中的Tomcat服务器运行应用程序,因为我还遵循了“将Spring Boot JAR应用程序转换为WAR”指南,并更改了指南中提到的“build.gradle”文件。基本上,我添加了行