Javascript 在For循环中保持useState

Javascript 在For循环中保持useState,javascript,reactjs,react-hooks,Javascript,Reactjs,React Hooks,我有一个表单,它在单击时动态地将元素输入到react状态数组中,显然,在单击之间,状态仍然存在。我现在正试图用编程的方式做同样的事情,但在每次迭代中,状态都不会持久化,这是唯一的答案,真正的上下文对象或本地存储,或者我的迭代中是否有错误,我可以纠正以允许状态持久化 我简化了代码,基本上,按钮触发将添加我想要的元素,但试图通过for const告诉react创建3个元素只创建1个。我有脚本来将状态写入会话存储,所以如果我没有遗漏什么大的东西,我可能会这么做,但我想我会问问看,因为如果我知道解决方案

我有一个表单,它在单击时动态地将元素输入到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为[]。