【发布时间】:2021-02-13 03:12:35
【问题描述】:
我想在一个数组中存储 4 个“hi”。而不是:
strArr.push('hi');
strArr.push('hi');
strArr.push('hi');
strArr.push('hi');
我这样做了:
for(let i = 0; i<4; i++){
setStrArr([...strArr, "hi"])
}
但是,我收到此错误:错误:重新渲染过多。 React 限制渲染次数以防止无限循环
我不知道出了什么问题,我想知道当 i=3 时它是否没有达到。所以我做了一个检查:
for(let i = 0; i<4; i++){
setStrArr([...strArr, "hi"])
if(i==3){
console.log("done")
}
}
'i'的值确实达到了3,但是为什么我的代码又运行了?
这是我的代码:
function MyApp(){
const [strArr, setStrArr] = useState([]);
for(let i = 0; i<4; i++){
setStrArr([...strArr, "hi"])
if(i==3){
console.log("done")
}
}
return(
<div>
</div>
)
}
【问题讨论】:
-
你在 JSX 的什么地方做这个 for 循环?你在用钩子吗?钩子的依赖是什么?
-
@Amir-Mousavi 添加了我的代码