不知道是否需要添加另一个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]();
    }
    ...
}

08-04 12:32