好事你让事情正常工作,但我只想添加一个更接近你最初想要做的解决方案,并注意中提出的观点你链接的SO问题 https://stackoverflow.com/questions/29893591/es6-modules-export-single-class-of-static-methods-or-multiple-individual-method%20question.
只是没有必要使用class
导出一堆静态方法。我不知道它将如何增加代码的功能、易用性或清晰度。实际上恰恰相反,语法看起来比导出普通的旧 ES5 样式对象更冗长,当我们将 ES6+ 的优点融入其中时更是如此。
您的 utils 模块的原始示例工作得很好。问题在于import.
由于您只是导出一个默认对象,因此导入它的正确方法是
import Utils from './utils/utils';
没有括号,没有星号,只是导入的默认对象的名称,然后可以像这样使用var text = Utils.textFormat(...)
.
不过,我们还可以走得更远。通过抛弃整个“导出一个默认对象”通过这种方法,我们可以充分利用模块系统的威力。
utils.js:
'use strict'
function textFormat(args) {
var s = args[0];
...
return s;
}
const someOtherUtility = str => str + ' works!';
export { textFormat, someOtherUtility };
现在导出的函数可以像这样使用
import * as Utils from './utils/utils';
var text = Utils.textFormat(rowData.text, "<Text style={{color:'blue'}}>Hey there</Text>");
Or像这样
import {textFormat} from './utils/utils';
var text = textFormat(rowData.text, "<Text style={{color:'blue'}}>Hey there</Text>");
无论你喜欢哪个。