Разница между командами импорта

В чем смысловая разница между

import {
  FaceOutline as FaceIcon,
  Key as KeyIcon
} from '@iconify/icons-mdi';

и

import FaceIcon from '@iconify/icons-mdi/face-outline';
import KeyIcon from '@iconify-icons/mdi/key';

В то время как последний работает, первый не работает. Сообщение об ошибке говорит, что @iconify/icons-mdi не найден?! `

Кстати: с другими пакетами все в порядке. Пример:

import {
  Menu as MenuIcon,
  ChevronRight as ChevronRightIcon
} from '@material-ui/icons';

Разница в экспорте. Второй работает, поэтому экспорты называются FaceIcon и KeyIcon, а в первом вы пытаетесь импортировать FaceOutline и Key - вам нужно поменять местами привязки «как» следующим образом: FaceIcon as FaceOutline, KeyIcon as Key

Randy Casburn 21.12.2020 18:53

Также правильны ли эти пути импорта? У вас есть косые черты и тире в разных точках пути from? Похоже, @iconify/icons-mdi правильный. Также вы уверены, что это точное сообщение об ошибке? Обычно сообщение больше похоже на «модуль X не содержит экспорта Y» или что-то в этом роде.

Brian Thompson 21.12.2020 19:09
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
2
183
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Все зависит от того, что и как экспортирует библиотека.

Если библиотека использует экспорт named, вы можете использовать этот синтаксис:

import { some } from 'some;'

Если модуль экспортирует только экспорт default, вам придется использовать следующую запись:

import some from 'some;'

Чтобы лучше разобраться в этой теме, предлагаю вам прочитать следующую статью

Ответ принят как подходящий

Это зависит от того, как модули экспортируются.

В примере @material-ui будет файл index.js, расположенный в корне, содержащий именованные экспорты для других файлов. Это не является обязательным требованием, поэтому не все пакеты позволяют это сделать.

Взгляните на исходный код material-ui. Вы можете видеть здесь, что этот файл экспортирует все значки, используя именованный экспорт.

Однако, если вы перейдете к конкретному модулю значков, вы увидите, что он использует экспорт по умолчанию.

Вот почему вы можете сделать это более чем одним способом.

Что касается @iconify/icons-mdi, я не знаю, содержат ли они этот индексный файл, поэтому вы можете импортировать или не импортировать в обоих направлениях. У меня нет опыта работы с этой библиотекой, как с material-ui, но в документации, которую я нашел, нигде не упоминается именованный импорт.

Вы можете узнать больше о различиях между именованным импортом и импортом по умолчанию в здесь.

Другие вопросы по теме