我想使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();
}
};
答案 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");
}
}
强文本