如何使if else代码更好,React js

时间:2019-05-22 10:30:02

标签: javascript reactjs

我想使if else代码可以重用或使用开关,如何使用该开关?

这是我的代码:

handleChange = (selectedkey) => {
    this.setState({ activeKey: selectedkey })
    if (selectedkey === '1') {
      this.updateTabNotPay();
    } else if (selectedkey === '2') {
      this.updateTabNotSent();
    } else if (selectedkey === '3') {
      this.updateTabInDelivery();
    } else if (selectedkey === '4') {
      this.updateTabFinish();
    } else if (selectedkey === '5') {
      this.updateTabCancel();
    }
  };

2 个答案:

答案 0 :(得分:1)

我会避免使用switch,而是使用以selectedkey索引的对象,该对象的值是关联的函数名称:

const keyFnNames = {
  '1': 'updateTabNotPay',
  '2': 'updateTabNotSent',
  '3': 'updateTabInDelivery',
  '4': 'updateTabFinish',
  '5': 'updateTabCancel'
};

// ...

handleChange = (selectedkey) => {
  this.setState({ activeKey: selectedkey })
  const fnName = keyFnNames[selectedKey];
  if (fnName) {
    this[fnName]();
  }
};

如果您知道selectedKey将始终具有相应的功能,则可以将if (fnName)支票抬高。

使用IMO代替switch会不必要地冗长且更容易出错。

答案 1 :(得分:0)

我想类似的东西可以工作吗?

    handleChange = (selectkey) => {
this.state({ activeKey: selectedkey })
switch(selectedkey){
case 1:
this.updateTabNotPay();
break;
case 2:
this.updateTabNotSent();
break;
case 3:
this.updateTabInDelivery();
break;
case 4:
this.updateTabFinish();
break;
case 5:
this.updateTabCancel();
break;
default:
console.log("error");
}
}

强文本