У меня есть некоторые проблемы с моими изображениями в моем реактивном проекте. На самом деле я всегда думал, что относительный путь к атрибуту src основан на файловой архитектуре.
Вот моя файловая архитектура:
components
file1.jsx
file2.jsx
file3.jsx
container
img
js
...
Однако я понял, что путь построен на URL-адресе. В одном из моих компонентов (например, в file1.jsx) у меня есть следующее:
localhost/details/2
<img src="../img/myImage.png" /> -> works
localhost/details/2/id
<img src="../img/myImage.png" /> -> doesn't work, images are not displayed
Как можно решить эту проблему? Я хочу, чтобы в любой форме маршрутов, обрабатываемых реагирующим маршрутизатором, все изображения могли отображаться с одинаковым путем.
javascript
reactjs
webpack
onedkr
источник
источник
require
. Прочтите этот ответ на SO для получения дополнительной информации.Ответы:
Вы используете относительный URL, который относится к текущему URL, а не к файловой системе. Вы можете решить эту проблему, используя абсолютные URL
<img src ="http://localhost:3000/details/img/myImage.png" />
Но это не очень удобно, когда вы развертываете сайт www.my-domain.bike или любой другой сайт. Лучше было бы использовать URL относительно корневого каталога сайта
<img src="/details/img/myImage.png" />
источник
/
что предшествуетdetails
(vs./details
и т. Д., Для других, которые могут объединить два).reactjs
withcordova
и используюES5
как eslint/images/popcorn.png
и нет./images/popcorn.png
. У меня работали со всеми маршрутами и прочим.В
create-react-app
относительных путях для изображений, похоже, не работают. Вместо этого вы можете импортировать изображение:источник
import './styles/style.less'; **import logo from './styles/images/deadline.png';**
Я получаю сообщение об ошибке в модуле 2-й строки, который не найден, пока существует изображение и путь правильный.Если для создания проекта вы использовали create-реакции-приложение, то ваша общая папка доступна. Так что вам нужно добавить вашу
image
папку в общую папку.<img src="/images/logo.png" />
источник
www.example.com/react-app
, общедоступная папка будет доступна на www.example.com, безreact-app
. Это может вызвать проблемы, поэтому принятый ответ будет правильным. Источники: добавление ресурсов и использование общей папкиС
create-react-app
есть публичная папка (с index.html ...). Если вы разместите свой «myImage.png» там, скажем, в подпапке img , то вы можете получить к ним доступ через:источник
Создайте папку изображений внутри src (/ src / images) и сохраните в ней свое изображение. Затем импортируйте это изображение в свой компонент (используйте свой относительный путь). Как ниже-
import imageSrc from './images/image-name.jpg';
А затем в вашем компоненте.
<img title="my-img" src={imageSrc} alt="my-img" />
Другой способ - хранить изображения в общей папке и импортировать их по относительному пути. Для этого создайте папку с изображениями в общей папке и храните в ней свое изображение. А затем в своем компоненте используйте его, как показано ниже.
<img title="my-img" src='/images/my-image.jpg' alt="my-img" />
Оба метода работают, но рекомендуется первый, потому что он более чистый, а изображения обрабатываются веб-пакетом во время сборки.
источник
в моем случае работает и следующий код.
источник
Некоторые старые ответы не работают, другие хороши, но не объясняют тему вкратце:
Если изображение находится в общедоступном каталоге
Пример:
\public\charts\a.png
В HTML:
В JavaScript:
Создайте изображение для нового img, динамически:
Установить изображение как существующий img с идентификатором img1 динамически:
Если изображение находится в каталоге src:
Пример:
\src\logo.svg
В JavaScript:
В jsx:
источник
Добавление файлового загрузчика npm в webpack.config.js в соответствии с его официальной инструкцией по использованию, например:
работал на меня.
источник
Импортируйте изображения в свой компонент
И назовите имя изображения на изображении src = {RecentProjectImage_3} как объект
источник
Друг показал мне, как сделать это следующим образом:
«./» работает, когда файл, запрашивающий изображение (например, «example.js»), находится на том же уровне в структуре дерева папок, что и папка «images».
источник
Поместите логотип в свою общую папку, например, в public / img / logo.png, а затем укажите в общей папке% PUBLIC_URL%:
Использование% PUBLIC_URL% в приведенном выше примере будет заменено URL-адресом
public
папки во время сборки. Только файлы внутриpublic
HTML можно ссылаться папки.В отличие от «/img/logo.png» или «logo.png», «% PUBLIC_URL% / img / logo.png» будет правильно работать как с маршрутизацией на стороне клиента, так и с общедоступным URL-адресом без полномочий root. Узнайте, как настроить общедоступный URL без полномочий root, запустив
npm run build
.источник