Разница между именованным экспортом и экспортом по умолчанию .
Когда вы используете export default <expression>
, это выражение становится доступным для импорта в другое место, когда вы используете import exprName from ...
. Модуль экспортирует expression
в качестве экспорта по умолчанию, а import exprName
берет экспорт этого модуля по умолчанию и помещает его в exprName
. Но синтаксис import { exprName }
- это нечто совершенно другое ; этот синтаксис указывает, что вы хотите извлечь с именем export с именем exprName
из модуля. Это не разрушение, даже если оно выглядит очень похоже на это.
Ваш myLib.js
не имеет именованного экспорта multiplyByTwo
(он имеет только экспорт по умолчанию объекта, который имеет свойство с именем multiplyByTwo
), так
import { multiplyByTwo } from './myLib'
выходит из строя.
Лучше всего использовать именованный экспорт вместо myLib
:
export const multiplyByTwo = val => val * 2;
и затем его можно импортировать с использованием синтаксиса import { multiplyByTwo }
, который вы используете в другом месте.
Другой вариант, использующий тот же код в исходном myLib
, заключается в том, чтобы импортировать экспортированный объект по умолчанию, а затем деструктурировать его после импорта:
import myLib from './myLib';
const { multiplyByTwo } = myLib;
Но это выглядит немного странно.