我使用create-react-app提升了我的项目,然后在上面添加了MobX。
我的mobX商店中有以下代码:
async post(url, payload, doThrow = false, actionDescription = '') {
try {
this.isLoading = true
const {data} = await this.httpClient.post(url, payload)
return data
} catch (e) {
if (doThrow) throw e
} finally {
this.isLoading = false
}
}
async post(url, payload, doThrow = false) {
try {
this.isLoading = true
const {data} = await this.httpClient.post(url, payload)
return data
} catch (e) {
if (doThrow) throw e
} finally {
this.isLoading = false
}
}
我的linter返回以下错误:
146:3警告重复名称'post'no-dupe-class-members
为什么eslint将post视为变量而不是函数?
答案 0 :(得分:1)
您已定义了两个具有相同名称的功能。你可能已经用其他语言编写了这些函数,但Javascript并没有这样做。
两个函数在js中是相同的,你可以将一个你想要的参数发送到一个方法。所以,基本上,你可以使用或不使用actionDescription
来调用post,但是它仍然会在不调用第一个函数的情况下执行第二个函数。这是因为,类函数附加到类的原型,因此post()
的第二个声明将替换第一个。
示例 -
add(a, b, c, d) {
// Do something
}
可以按如下方式调用 -
add(1)
或add(1, undefined, 2) or
add(undefined,undefined,undefined,4)`
甚至更好 -
add() {
var sum;
for(var i=0; i < arguments.length; i++) {
sum += arguments[i];
}
return sum;
}
可以使用任意数量的参数调用以获得预期结果。
如果你想用不同的功能实现不同的东西,那么你应该重命名其中一个功能。