Ленивая загрузка: не удается загрузить динамический модуль

Я пытаюсь динамически загружаться в свою панель инструментов, используя компоненты React.lazy() и Suspense. Он очень хорошо работает с жестко заданным значением, но не с переменной. Я немного потерял дар речи прямо сейчас. Наверное глупая ошибка!

Работает:

const WidgetComponent = React.lazy(() => import('../../../widgets/dummy/Dummy'));

Не работает:

// widget.path === '../../../widgets/dummy/Dummy'
const WidgetComponent = React.lazy(() => import(widget.path));

Не работает также:

const WidgetComponent = React.lazy(() => import(`${widget.path}`));

Я могу добавить одну вещь: реквизит виджета заполняется из файла json в общей папке.

Использование переменной не сработает. Использование выражения должно работать. Ответ на похожую задачу . Еще один. Но я думаю, что лучше написать: React.lazy(() => import('../../../widgets/dummy/Dummy'));.

Ajeet Shah 24.12.2020 17:32

попробуйте `${widget.path}` вместо widget.path

ARZMI Imad 24.12.2020 17:36

Работает: импорт(../../../widgets/${widget.component})); Не работает: импорт(${widget.path}));

Jonathan Anctil 24.12.2020 17:37

`${widget.path}` работает, проверьте здесь codeandbox.io/s/reactlazy-forked-1yq4i?file=/src/…

ARZMI Imad 24.12.2020 17:50

@ARZMIImad хорошо, я попробую, может быть, компилятор, который меня балует...

Jonathan Anctil 24.12.2020 17:59
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
5
244
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Хорошо, с помощью @Ajeet Shah я решил свою проблему.

Вместо этого я создал новое свойство с именем компонента и сделал это:

const WidgetComponent = React.lazy(() => import(`../../../widgets/${widget.component}`));

Не самое элегантное решение, но оно работает.

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