我有一个函数,在调用我的 api 之前充当某种焦点。
我想通过简化 if 语句来减少一点膨胀。
目前我有一个声明列表。其中 2 个如下所示
if (this.props.source === 1) {
api.updateData01(id, data).then(res => {
this.hideModal()
this.props.updateData01()
console.log('DATA UPDATED')
})
}
if (this.props.source === 2) {
api.updateData02(id, data).then(res => {
this.hideModal()
this.props.updateData02()
console.log('DATA UPDATED')
})
}
我想通过提出 if 语句来简化它,而不是动态重命名函数。
类似的东西
if(this.props.source === 1){
//rename updateData to updateData01
}
if(this.props.source === 2){
//rename updateData to updateData02
}
api.updateData01(id, data).then(res => {
this.hideModal()
this.props.updateData01()
console.log('DATA UPDATED')
})
我以前从未需要重命名函数,所以我不确定如何开始。
我尝试过类似的事情,但显然行不通。
if(this.props.source === 1){
const dataSource = 01
}
api.updateData + datasource + (.....
最佳答案
您可以使用 dynamic property names 而不是重命名函数根据哈希值访问正确的函数 (api
)
const api = {
updateData01 : () =>{},
updateData02 : () =>{},
/*...*/
updateData0N : () =>{}
}
api[`updateData0${this.props.source}`]().then(/*...*/)
关于javascript - 如何动态更改函数的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58396103/