javascript - useEffect() 由于某种原因无限运行
问题描述
所以我目前正在尝试学习反应,作为实践,我只是尝试使用黑客新 API 构建一个黑客新闻网站。但是,我遇到了一个问题。由于某种原因,它目前正在无限循环。我调试了一下,发现跟 useEffect() 钩子有关系。我在这篇文章中尝试了解决方案,但它没有成功(我想我可能做错了)。
我的代码:
const [maindata, setmaindata] = useState("");
useEffect(() => {
axios
.get("https://hacker-news.firebaseio.com/v0/user/jl.json?print=pretty")
.then((repo) => {
const output = [];
// repo.data["submitted"].length
for (let x = 0; x < 30; x++) {
axios
.get(
"https://hacker-news.firebaseio.com/v0/item/" +
repo.data["submitted"][x] +
".json?print=pretty"
)
.then((titledata) => {
//console.log(titledata.data["text"]);
output.push(titledata.data["text"]);
});
}
});
setmaindata(output);
});
我也尝试更换:
}
});
setmaindata(output);
});
和:
}
});
}, [output});
但这似乎不起作用
解决方案
如果你不将依赖数组传递给useEffect
,useEffect
在每个渲染上运行。
通过将空数组([])作为依赖项传递,useEffect
在安装组件时运行一次。前任:
useEffect(() => {
... // your code
}, [])
推荐阅读
- apache-karaf - 卡拉夫没有启动
- javascript - 如何为 Webpack 编译的每个模块添加一个 JavaScript 字符串?
- windows - 使用数组时 PowerShell 中的错误
- ssl - 使用 go-daddy 的 ssl 证书启用 HTTPS
- numpy - 不理解类部分并通过读取 h5 数据集文件进行重塑
- sql - SQL:从 Select 语句中过滤最近的日期条目
- bash - 为什么这个 bash 脚本没有改变路径?
- c# - 处理 C# ADO.Net 应用程序中的泄漏
- r - Shiny:数据表的动态数量
- google-chrome - 为什么 google.com 中 Service Worker 的安装路径是“/_/chrome”?