不知道是否需要添加另一个jshint库,或者是否应该以其他方式执行此操作。
我有一个文件(出于解释原因,我们将其称为stuff-functions.js),该文件可导出此类功能...
export function a() {
return 'stuff';
}
export function b() {
return 'more stuff';
}
export function c() {
return 'even more stuff';
}
在另一个文件中,我正在导入该文件并通过参数调用该函数。
import * as stuffFunctions from './stuff-functions'
export default class someReactClass {
myFunc(functionToCall) {
return stuffFunctions[functionToCall]();
}
...
}
它工作正常,但在控制台中出现错误提示...
Unable to validate computed reference to imported namespace 'stuffFunctions'
因此,我应该以不同的方式解决这个问题还是寻找某种允许这样做的eslint库?
编辑...
我添加了这一行来停止错误// eslint-disable-line
我只是好奇是否有更好的方法可以做到这一点。也许像...
import {a, b, c} from './stuff-functions';
export default class someReactClass {
myFunc(functionToCall) {
const myStuffFunctions = {
a: a,
b: b,
c: c
};
return myStuffFunctions[functionToCall]();
}
...
}
虽然似乎多余。 :/
最佳答案
该错误是由eslint-plugin-import插件中的import/namespace
规则报告的。发生这种情况是因为您正在确定将在运行时调用哪个导入的函数:
stuffFunctions[functionToCall]();
插件的静态分析无法验证这是有效的导入,并将其报告为错误。
最简单的解决方案是添加ESLint注释以将规则重新配置为allow computed references:
/*eslint import/namespace: ['error', { allowComputed: true }]*/
import * as stuffFunctions from './stuff-functions'
export default class someReactClass {
myFunc(functionToCall) {
return stuffFunctions[functionToCall]();
}
...
}