不确定我是否需要添加另一个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]();
}
...
}
虽然似乎多余。 :/
答案 0 :(得分:9)
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]();
}
...
}