У меня есть функция, которая принимает некоторые аргументы и отображает SVG. Я хочу динамически импортировать этот svg на основе имени, переданного функции. Это выглядит следующим образом:
import React from 'react';
export default async ({name, size = 16, color = '#000'}) => {
const Icon = await import(/* webpackMode: "eager" */ `./icons/${name}.svg`);
return <Icon width={size} height={size} fill={color} />;
};
Согласно документации для динамического c импорта и комментария magi c "eager":
"Не генерирует лишний чанк. Все модули включены в текущий чанк, и никакие дополнительные сетевые запросы не делаются. Обещание все еще возвращается, но уже разрешено. В отличие от импорта c, модуль не выполняется до сделан вызов import (). "
Это то, к чему мой Icon разрешен:
> Module
default: "static/media/antenna.11b95602.svg"
__esModule: true
Symbol(Symbol.toStringTag): "Module"
Попытка отобразить его так, как пытается дать моя функция мне эта ошибка:
Objects are not valid as a React child (found: [object Promise]). If you meant to render a collection of children, use an array instead.
Я не понимаю, как использовать этот импортированный модуль, чтобы отобразить его как компонент, или это вообще возможно?