Невозможно использовать переменную JavaScript в запросе для динамического импорта в React

Я использую react-google-maps, но думаю, что мой вопрос относится к общему случаю пользователя. Я хочу динамически загружать значок, используя URL-адрес, переданный в качестве реквизита. Но я обнаружил, что если я использую переменную, я получаю сообщение об ошибке. Пожалуйста, смотрите ниже:

Когда мне требуется иконка с использованием строки, она отлично работает, например.

icon = {require('../assets/myPng.png')}

Но если мой путь png является переменной, например

let url = '../assets/myPng.png'

icon = {require(`${url)`}

Я получаю сообщение об ошибке:

cannot find module '../assets/myPng.png'

Кто-нибудь может сказать мне, что происходит?

если я использую icon = {require(url}, это тоже не работает.

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

Tholle 15.03.2019 13:15
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
47
1

Ответы 1

Лучше использовать require(...), тогда путь будет управляться вашим менеджером пакетов. Если вы используете строку напрямую, она будет пропущена, и вы получите ошибку. Я бы посоветовал использовать:

const icon = require('../assets/myPng.png')
// ...
<MapComponent icon = {icon} ... />

почему бы не просто const { icon } = require('../assets/myPng.png'); ?

René Datenschutz 15.03.2019 12:53

Потому что require(...) обычно возвращает строку при использовании на картинке, а не на объекте. Вы получите undefined здесь.

soywod 15.03.2019 12:53

Спасибо за ваши комментарии, но мне нужно, чтобы require(...) использовала переменную и динамически загружала значок в зависимости от пользователя, я не могу использовать жестко заданную строку. Я вижу npm dynamic-import и попробую это, но после дальнейшего изучения кажется невозможным динамически требовать что-то так, как я хочу - к сожалению, я не могу использовать импорт.

dorriz 15.03.2019 13:15

Ну, импорт можно использовать динамически, см. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…

soywod 15.03.2019 13:19

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