Чтобы понять разницу, сначала нужно узнать, как они экспортируются.
В случае React
экспорт идет примерно так
const Component = ...
...
...
export Component;
Это становится доступным под React.Component
, и вы можете импортировать его как import { Component } from 'react';
Под микроскопом они выглядят так:
default.Component
...
В то время как все остальное находится под объектом default
.
Если вы быстро наберете console.log
из theme
, вы поймете, что я имею в виду.
Надеюсь, это имеет смысл.
Давайте немного углубимся.
Предположим, у вас есть следующий бит кода:
const a = {
test: 'hello',
};
const b = {
foo: 'bar',
}
export default a;
Теперь давайте import
, что
import * as theme from './test.js'
Когда мы делаем console.log( theme )
, мы получаем
{ default: { test: 'hello' } }
Что это показывает? Это означает, что объект export
файла содержит свойство default
, которое автоматически загружается в память, когда мы делаем что-то вроде import theme from 'test'
. Однако, если у вас есть более одного export
, компилятор дает вам возможность выбирать, но в то же время предоставляет вам объект default
только для отступления.
В вашем случае вы экспортировали все под default
. Когда вы делаете import theme from './theme'
все работает нормально. Однако когда вы делаете { PRIMARY_COLOR }...
, он пытается найти что-то, что было экспортировано, например
export PRIMARY_COLOR...
Надеюсь, это понятно! :)