是否必须明确导入Component?

时间:2018-05-05 05:51:56

标签: reactjs ecmascript-6

如果您可以直接从React直接访问Component,那么导入React然后导入Component的重点是什么?

这就是我的意思。

你可以这样做:

import React, {Component} from 'react'

然后写

class SomeComponent extends Component

但您也可以这样做:

import React from 'react'

然后写

class SomeComponent extends React.Component

这有什么区别?第一种方法真正减轻了什么痛苦?在我看来,第二个选项更加简洁,第一个选项非常冗余,因为无论是否明确导入,都可以访问Component

一个非常明确的类比是:

import Animals from 'the-world';

这将获得世界上所有的动物。现在为什么要写:

import Animals, { Goat } from 'the-world';

如果Animals获取了世界上所有的动物,那么为什么要单独导入Goat。我的意思是它已经存在于Animals对象中。

2 个答案:

答案 0 :(得分:2)

import React from 'react' import {Component} from 'react' import an Object时有一些属性。你导入一切。

执行int时,您只会导入一个模块。通过这样做,您可以向应用程序导入更少的代码(因为您只需要库的这一部分)。

但是,在实际情况下,您的应用程序将始终需要所有内容,因此您可以决定如何使用它 - 通过解构所需模块或在默认导出对象上访问它。

答案 1 :(得分:2)

如果导入Component等单个导出,则React通常是不必要的。这大部分都是风格问题。

Component输入更少的字符(也可以使用IDE自动导入),而React.Component命名空间使框架导入更容易识别。由于ES模块的编译方式,它们在缩小的输出中具有大致相同的占用空间。

React.Component样式与全局加载React的情况兼容。

React命名空间还可以更容易地重构项目以使用另一个类似React的框架(Inferno,Preact),反之亦然,因为某些导入名称可能不同或需要额外注意。它们可以更容易与命名空间匹配。

最好使用

import * as React from 'react';

而不是

import React from 'react';

因为默认导入导致整个包被导入,所以未使用的属性没有机会被树木震动。由于syntax limitations,无法在同一行导入Component* - 但通常不需要这样做。