我有以下代码:
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
之后我得到一个奇怪的结果,每次进入分钟:
答案 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;
}