我正在研究一个简单的React库,但我不确定是否正在不必要地创建多个对象。
我有app.js
个文件:
class App {
method1() {
}
method2() {
}
}
export default new App();
我还有一个index.js
文件:
import app from './app.js';
...
export default app;
在我的React项目的index.js
中(我使用该库)我使用:
import MyLibrary from 'react-library';
...
MyLibrary.method1();
然后我在我的一些组件中也这样做:
import MyLibrary from 'react-library';
...
MyLibrary.method2();
第二次将MyLibrary
导入与第一个MyLibrary
不同的对象?
答案 0 :(得分:2)
MyLibrary的第二次导入是否与第一次导入不同 在MyLibrary?
通常,import
返回的对象被缓存(与nodejs require
相同的行为),同一文件的多次导入将导致返回相同的对象。所以问题的答案是否定的,你在内存中处理相同的引用。
https://webpack.github.io/docs/resolving.html
每个文件系统访问都被缓存,以便多个并行或串行 对同一资源的请求已合并
在您的特定情况下,如评论部分所述,您要导出实例,而不是类本身。
export default new App();
因此,导入该文件的每个组件都将处理同一个实例。 这是一个单例模式,不知道它是否是所需的行为,如果你想要每个组件都有它自己的实例,你应该导出该类。
export default App;
答案 1 :(得分:1)
你正在那里创建一个单圈,在构造函数中放置一个断点,你将看到如何只创建一个实例。