首页 > 解决方案 > 同时导入命名空间和子模块是否有缺点?例如 `import React, { Component } from ...`

问题描述

我正在和一些同事一起研究 React 组件,我已经导入了 React 并开始将我的课程编写为

import React from 'react'

Class MyComponent extends React.Component

当他们建议我也导入组件时,即:

import React, { Component } from 'react'

这对我来说是一种新模式,我的第一反应是猜测同时导入命名空间和子模块会导致它们被双重导入,因为我们同时拥有一个React对象和一个Component对象(也存在于 下React) .

我的第二个反应是认为由于对象是通过引用传递的,两者React.Component都会Component引用内存中的同一个对象,所以唯一真正的区别是会有一个额外的(但最小的——不包括 React 下的其他模块)React目的。

但是,我不确定。哪个是对的?或者两者都不是?

标签: javascriptreactjsecmascript-6es6-modules

解决方案


不,该模块不会被双重导入。这两种导入方式之间并没有太大区别。如果文件中有许多组件,则第二种方法很有意义,因此您可以只编写extends Component而不是extends React.Component.

在这种情况下,

import React, { Component } from 'react';

本质上是一样的

import React from 'react';
const { Component } = React;

推荐阅读