2016-09-07 3 views

ответ

7

import React, { Component } позволяет делать class Menu extends Component вместо class Menu extends React.Component. Это меньше типизации и дублирования пространства имен React, которое обычно является желательным современным соглашением о кодировании.

Кроме того, такие инструменты, как Webpack 2 и Rollup, «трясут дерево», что означает, что любой неиспользованный экспорт не входит в ваш окончательный код. С import React/React.Component вы гарантируете, что исходный код React будет в комплекте. С помощью import { Component } некоторые инструменты будут только связывать код, необходимый для использования класса Component, за исключением остальной части React.

Вышеупомянутый абзац в данном конкретном случае не имеет значения, поскольку для записи JSX всегда требуется иметь React в текущем пространстве имен, но только импорт точных модулей, которые вам нужны в других случаях, может привести к уменьшению кода в конце.

Помимо этого, это личное предпочтение.

+0

Итак, я все еще импортирую PropTypes и все остальное, что приходит с React? Не похоже, что я просто импортирую компонент? – epiqueras

+0

@epiqueras Вы импортируете все, но Компонент импортируется таким образом, что вам не нужно ссылаться на него как на «React.Component», но вместо этого просто «Компонент» – Li357

+0

Просто fyi, даже если вы просто делали '{ Компонент} из «реакции», ваш поставщик еще будет связывать зависимость ENTIRE, поэтому, если вы беспокоитесь о размере, это не способ уменьшить его. – ZekeDroid

2

Что такое импорт или импорт пространства имен. То, что они делают в основном скопировать содержимое этого модуля в пространство имен, позволяя:

import React, { Component } from 'react'; 

class SomeComponent extends Component { ... } 

Обычно, мы бы расширить React.Component, но так как компонент импорта модуля в пространство имен, можно просто сослаться на него с Component, React. не требуется. Все модули React импортируются, но модули внутри фигурных скобок импортируются таким образом, что при доступе к префиксу пространства имен React не требуется.

Смежные вопросы