当前位置: 首页 > 知识库问答 >
问题:

useEffect代码显示错误的信息,即使后端返回了正确的数据[重复]

柴寂离
2023-03-14

我在学习反应时遇到了下面的棘手问题,下面的代码输出如下

在3中

此处为%0

根据我的理解,setvideo已经为video数组设置了值,那么为什么返回的长度是0?

const [Videos, setVideos] = useState([])

useEffect(() => {
    axios.get('/api/video/getVideos')
        .then(response => {
            if (response.data.success) {
                console.log("IN  " + response.data.videos.length)
                setVideos(response.data.videos)
                console.log("HERE " + Videos.length);
            } else {
                console.log("OUT");
                alert('Failed to get Videos')
            }
        })
}, [])

共有2个答案

晋承嗣
2023-03-14

一般的问题是,我们想要等待状态更新,然后在之后做一些事情。不幸的是,我们不能编写顺序代码,因为每个状态更新都是异步的。使用自定义挂钩-即useStateWithPromise-可以解决这个问题。

柯凯旋
2023-03-14

在React中,状态更改是异步的,并且在设置后不能记录。我举这个例子是为了让你更清楚。

import React, { useState, useEffect } from "react";
import "./style.css";

export default function App() {
  const [videos, setVideos] = useState([]);
  
  useEffect(() => {
    setVideos(["A", "B", "C", "D"]);
    console.log("Videos1:", videos); //----> empty
  }, [])

  useEffect(() => {
    console.log("Videos:", videos); //---> REAL values
  }, [videos])

  const displayVideos = videos.map((elem, index) => 
    <div key={index}>
      <h1>{elem}</h1>
    </div>
  )

  return (
    <div>
    {displayVideos}
    </div>
  );
}

演示

 类似资料:
  • 问题内容: 试图让我的PHP脚本返回一些SQL表查询。这是我目前的脚本: 这是与之关联的Android代码: 以及调用getQuestionsJSON …的方法: 这是我在getQuestionsJSON …()方法中使用的Log.v()的LogCat: 因此,我真的不明白为什么这会返回“问题”,而不是运行getQuestions()时传递的字符串吗? 问题答案: 在PHP文件中 这是对请求的回应

  • 问题内容: 我正在使用JDBC在我的Java项目中连接到MySQL。我已经在mySQL表中实现了一些检查约束。 我有一个表单,用户可以在其中输入一些值并将其提交到MySQL表。如果违反约束,则Java会给出SQLException。 我的 目的 是显示有关表中违反 哪种 条件的弹出消息。 如何在Java中检索此信息? 我尝试了一个记录器,但它仅在控制台中显示冗长的错误消息。 问题答案: 您可以查看

  • 我做了一个触发器来验证两列,当其中只有一列错误时,它会正常显示消息,当两列都错误时,我会得到错误 错误代码:1292。截断不正确的INTEGER值:" 我相信是在Concat部分,我是不是错过了什么功能?

  • 我有一个表格和一个表格。包含所有课程的列表,包含教授/协助该课程的志愿者列表。 我想写一个查询,返回没有任何志愿者分配给它的所有课程的列表。这就是正在发生的事情: 以下所有查询都返回 course_id 3 course_id 4 course_id 5 为什么course_id 1(正确)被遗漏,而course_id 3却不是??? 同样的问题,但没有一个解决方案对我有效: 左侧外部连接轨4

  • 我的Kotlin Android应用程序有问题。到目前为止我还没有用Kotlin写过这么大的项目,所以我完全不知道出了什么问题。 当我试图启动我的应用程序时,我重新设置了一堵红线墙。我找到了一些解决方案(针对Java)并试图将它们实现到我的代码中,但没有奏效。 [FIXED]我修复了我的错误(在第一个注释中指出),并从片段xml中删除工具:context=“.mainactivity”

  • 错误 *--unhandled-rejections=strict`(请参见https://nodejs.org/api/CLI.html#CLI_unhandled_rejections_mode)。(拒绝ID:1)(节点:1616)[DEP0018]拒绝警告:不推荐未处理得承诺拒绝.将来,未处理的承诺拒绝将以非零退出代码终止node.js进程。 app.js文件 database.js文件