javascript - 如何使用钩子更改数组的状态?
问题描述
我不知道它到底是什么,但我在尝试使用钩子对数组进行最简单的状态更新时遇到了无数问题。
我发现唯一可行的方法是使用 useReducer 对数组执行一次更新,并将调度放在 onClick 处理程序上。在我当前的项目中,我试图在嵌套在表单提交上运行的函数中的 for 循环中更新数组状态。我尝试了许多不同的解决方案,这只是我的尝试之一。
function sessionToState(session) {
let formattedArray = []
for (let i = 0; i < session.length; i++) {
formattedArray.push({ url: session[i] })
setLinksArray([...linksArray, formattedArray[i]])
}
}
// --------------------------------------------------------
return (
<div>
<form
method="post"
onSubmit={async e => {
e.preventDefault()
const session = await getURLs({ populate: true })
sessionToState(session)
await createGroup()
我想知道我是否遗漏了一些重要的东西,或者关于如何使用钩子处理数组的一些很棒的提示和技巧。如果需要更多信息,请随时询问。谢谢。
解决方案
从嵌套函数调用中调用状态设置器时,您应该使用setState
. 在您的情况下,它将是:
setLinksArray(linksArray => [...linksArray, formattedArray[i]])
目前尚不清楚您遇到了什么样的问题,但上面的修复将使您免于linksArray
.
这也适用于任何状态,而不仅仅是数组。
推荐阅读
- android - Jetpack 版本的 android.support
- kubernetes - 使用 PVC 的 K8s 和守护进程
- python - 带有 if 语句的 Python 文件重命名器
- flutter - 带有 setState 或 FutureBuilder 的 InitState?在 Flutter 中显示数据库中的数据,哪种方法更好?
- ruby-on-rails - Rails 方法用于两个相关连接表之间的关系并同时强制数据完整性
- c# - C#通过单击单元格获取GridView的行索引
- r - 如何在全球销售数据中找到各个用户的周末?
- amazon-web-services - 如何在不增加延迟的情况下使用 API Gateway?
- r - 根据管道结果在 R 中绘制直方图
- ui-automation - 空手道功能组的顺序执行并将结果合并到一个报告中