Javascript 在For循环中保持useState
我有一个表单,它在单击时动态地将元素输入到react状态数组中,显然,在单击之间,状态仍然存在。我现在正试图用编程的方式做同样的事情,但在每次迭代中,状态都不会持久化,这是唯一的答案,真正的上下文对象或本地存储,或者我的迭代中是否有错误,我可以纠正以允许状态持久化 我简化了代码,基本上,按钮触发将添加我想要的元素,但试图通过for const告诉react创建3个元素只创建1个。我有脚本来将状态写入会话存储,所以如果我没有遗漏什么大的东西,我可能会这么做,但我想我会问问看,因为如果我知道解决方案,这将大大改善我的应用程序的整体运行状况Javascript 在For循环中保持useState,javascript,reactjs,react-hooks,Javascript,Reactjs,React Hooks,我有一个表单,它在单击时动态地将元素输入到react状态数组中,显然,在单击之间,状态仍然存在。我现在正试图用编程的方式做同样的事情,但在每次迭代中,状态都不会持久化,这是唯一的答案,真正的上下文对象或本地存储,或者我的迭代中是否有错误,我可以纠正以允许状态持久化 我简化了代码,基本上,按钮触发将添加我想要的元素,但试图通过for const告诉react创建3个元素只创建1个。我有脚本来将状态写入会话存储,所以如果我没有遗漏什么大的东西,我可能会这么做,但我想我会问问看,因为如果我知道解决方案
const sectionI = {
type: "i",
sectionArea: "",
};
const [i, setI] = useState([])
const strArr = ["i","i","i"]
const addI = () =>{
const newI = [...i, {...sectionI}]
setI(newI)
}
<button onClick={()=>addI()}>Add One Image</button>
const addMultiple = () =>{
for(const el of strArr){
const newI = [...i, {...sectionI}]
setI(newI)
}
}
const section i={
类型:“我”,
截面积:“,
};
常量[i,setI]=useState([]
常量strArr=[“i”、“i”、“i”]
常量addI=()=>{
const newI=[…i,{…sectionI}]
setI(newI)
}
addI()}>添加一个图像
常量addMultiple=()=>{
用于(斯特拉尔常数){
const newI=[…i,{…sectionI}]
setI(newI)
}
}
我将向您展示如何修复它,并为您提供指向另一个我的答案的链接,以供解释。以下是解决问题的方法:
const addMultiple = () =>{
for(const el of strArr){
setI(prevState => [
...prevState,
{...sectionI},
])
}
}
这就是它发生的原因:我假设您指的是创建问题的
addMultiple
函数?是的,在循环过程中,控制台日志记录I在每次传递中都显示I为[]。