我在学习反应时遇到了下面的棘手问题,下面的代码输出如下
在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')
}
})
}, [])
一般的问题是,我们想要等待状态更新,然后在之后做一些事情。不幸的是,我们不能编写顺序代码,因为每个状态更新都是异步的。使用自定义挂钩-即useStateWithPromise-可以解决这个问题。
在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”
我已将我的应用程序与Crashlytics firebase集成。firebase报告的错误对我来说并不清楚。请参阅下面的火库错误。 <code>致命异常:java.lang.NullPointerException:尝试在af.ahg.buberdriver.activities.MainActivity的空对象引用上调用虚拟方法“java.lang.String a.a.a.i.f.c()”。