是否正在创建多个对象?

时间:2017-09-12 07:50:51

标签: javascript reactjs

我正在研究一个简单的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不同的对象?

2 个答案:

答案 0 :(得分:2)

  

MyLibrary的第二次导入是否与第一次导入不同   在MyLibrary?

通常,import返回的对象被缓存(与nodejs require相同的行为),同一文件的多次导入将导致返回相同的对象。所以问题的答案是否定的,你在内存中处理相同的引用。

https://webpack.github.io/docs/resolving.html

  

每个文件系统访问都被缓存,以便多个并行或串行   对同一资源的请求已合并

在您的特定情况下,如评论部分所述,您要导出实例,而不是类本身。

export default new App();

因此,导入该文件的每个组件都将处理同一个实例。 这是一个单例模式,不知道它是否是所需的行为,如果你想要每个组件都有它自己的实例,你应该导出该类。

export default App;

答案 1 :(得分:1)

你正在那里创建一个单圈,在构造函数中放置一个断点,你将看到如何只创建一个实例。