切换语句不会因不同变量而改变

时间:2017-02-15 22:05:57

标签: javascript html reactjs switch-statement

我有以下代码:

   refreshTableOnTabChange(selectedIndex) {
      console.log("inside refreshTableOnTabChange");
      let level = '';
    //   if (selectedIndex == 1){
    //     this.setState({level: 'day'})
    //     this.setState({tabIndex: 1})
    //     level = 'day';
    //   }
    //   else if (selectedIndex == 2) {
    //     this.setState({level: 'hour'})
    //     this.setState({tabIndex: 2})
    //     level = 'hour';
    //   }
    //   else if (selectedIndex == 3) {
    //     this.setState({level: 'minute'})
    //     this.setState({tabIndex: 3})
    //     level = 'minute';
    //   }
      console.log(selectedIndex);
      switch (selectedIndex) {
          case 1:
            level = 'day';
          case 2:
            level = 'hour';
          case 3:
            level = 'minute';
      }
      console.log(level);
      this.setState({tabIndex: selectedIndex, level: level});

跟随https://www.w3schools.com/js/js_switch.asp

之后

我得到一个奇怪的结果,每次进入分钟:

enter image description here

1 个答案:

答案 0 :(得分:3)

您应该在每个案例结束时明确使用语句break。 JavaScript中的Switch语句有一种堕落行为。正如更正式地陈述here

  

与每个案例标签关联的可选break语句可确保   一旦匹配的语句,程序就会断开   执行并继续执行切换后的语句。 如果   中断省略,程序继续执行下一步   switch语句中的语句

所以你必须在下面更改你的switch语句:

switch (selectedIndex) {
    case 1:
        level = 'day';
        break;
    case 2:
        level = 'hour';
        break;
    case 3:
        level = 'minute';
        break;
}