React:函数的条件表达式
React: Conditional expression for a function
我在其中一个组件中有以下状态:
this.state = {
num1: 0,
num2: 0,
num3: 0,
num4: 0,
num5: 0
}
函数 setNumber()
正在从子组件获取值。该函数需要:
- 检查,如果第一个状态为0,则为其赋值(并中断)。如果第一个状态不为 0,则查看第二个状态,如果为 0,则赋值。继续所有 5 个州。
- 检查是否有任何状态与函数的值匹配,如果是,则将该状态设置为 0。
你能帮我定义一下这个条件表达式吗?
我假设,这也可以通过 for 循环和状态数组来完成,但无法弄清楚代码。
据我了解,您需要使用 prevState
prevState is a reference to the previous state. It should not be directly mutated. Instead, changes should be represented by building a new object based on the input from 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 {};
});
我在其中一个组件中有以下状态:
this.state = {
num1: 0,
num2: 0,
num3: 0,
num4: 0,
num5: 0
}
函数 setNumber()
正在从子组件获取值。该函数需要:
- 检查,如果第一个状态为0,则为其赋值(并中断)。如果第一个状态不为 0,则查看第二个状态,如果为 0,则赋值。继续所有 5 个州。
- 检查是否有任何状态与函数的值匹配,如果是,则将该状态设置为 0。
你能帮我定义一下这个条件表达式吗?
我假设,这也可以通过 for 循环和状态数组来完成,但无法弄清楚代码。
据我了解,您需要使用 prevState
prevState is a reference to the previous state. It should not be directly mutated. Instead, changes should be represented by building a new object based on the input from 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 {};
});