React:函数的条件表达式

时间:2018-04-20 01:59:27

标签: reactjs conditional

我在其中一个组件中有以下状态:

this.state = {
   num1: 0,
   num2: 0,
   num3: 0,
   num4: 0,
   num5: 0
}

函数setNumber()从Child组件获取值。该功能需要:

  1. 检查,如果第一个状态为0,则将值赋给它(并且中断)。如果第一个状态不为0,请检查第二个,如果为0,则分配该值。继续所有5个州。
  2. 检查是否有任何状态与函数值匹配,如果是,则设置该状态为0.
  3. 你能帮我定一下这个条件表达式吗?

    我认为,这也可以通过for循环和状态数组来完成,但无法弄清楚代码。

1 个答案:

答案 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 {};
});