【发布时间】:2017-12-08 16:29:13
【问题描述】:
我有这个数组映射函数来渲染一些东西...... 我有 5 个从 0 开始的变量,根据 switch 语句,每个变量的值都会增加 1。
renderUser = (index)=>{
let C1Count = 0, C2Count = 0, C3Count = 0, C4Count = 0, C5Count = 0;
let users = this.state.users.map((user,index)=>{
// swiching some value , that is from 0 to 4
switch(this.state.users[index].result){
case 0: { C1Count += 1; break; }
case 1: { C2Count += 1; break; }
case 2: { C3Count += 1; break; }
case 3: { C4Count += 1; break; }
case 4: { C5Count += 1; break; }
default: { console.log("non"); break; };
}
return(
....stuff to render
)
}).reverse();
return users;
}
我要更新5个状态
this.setState({
C1Count:C1Count, // state : variable value
C2Count:C2Count, // state : variable value
C3Count:C3Count, // state : variable value
C4Count:C4Count, // state : variable value
C5Count:C5Count // state : variable value
});
如果我将 setState 代码放在 ...}).reverse(); 之后和 ..return users; 之前
我得到一个
已超过最大更新深度。这可能发生在组件 在 componentWillUpdate 内重复调用 setState 或 组件更新。 React 将嵌套更新的数量限制为 防止无限循环。
错误 .... 所以我的问题是...如何在所有循环完成并更新 C1Count, C2Count, C3Count, C4Count, C5Count 变量后更新状态。
【问题讨论】:
标签: javascript arrays reactjs state