我在其中一个组件中有以下状态:
this.state = {
num1: 0,
num2: 0,
num3: 0,
num4: 0,
num5: 0
}
函数setNumber()
从Child组件获取值。该功能需要:
你能帮我定一下这个条件表达式吗?
我认为,这也可以通过for循环和状态数组来完成,但无法弄清楚代码。
答案 0 :(得分:1)
根据我的理解,您需要使用prevState
prevState是对先前状态的引用。它不应该直接变异。相反,应该通过基于来自prevState的输入构建新对象来表示更改。
你的函数中的setState应该如下所示
this.setState(prevState => {
if (prevState.num1 == 0) {
return { num1: value };
} else if (prevState.num1 == value) {
return { num1: 0 };
} else if (prevState.num2 == 0) {
return { num2: value };
} else if (prevState.num2 == value) {
return { num2: 0 };
} else if (prevState.num3 == 0) {
return { num3: value };
} else if (prevState.num3 == value) {
return { num3: 0 };
} else if (prevState.num4 == 0) {
return { num4: value };
} else if (prevState.num4 == value) {
return { num4: 0 };
} else if (prevState.num5 == 0) {
return { num5: value };
} else if (prevState.num5 == value) {
return { num5: 0 };
}
return {};
});