如果您可以直接从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
对象中。
答案 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
和*
- 但通常不需要这样做。