Изображение не отображается с реквизитами в ReactJS

У меня есть локальное изображение, и я хочу разместить его на своей веб-странице с Реквизит. Я сделал src = {require('../images/my-image.png')}, но это не сработало. Он работает только с импортом файла изображения, но я хочу, чтобы он был динамическим.

Результирующий элемент img выглядит следующим образом: Изображение не отображается с реквизитами в ReactJS

App.js:

export default function App() {
  return (
      <div className = "App">
        <Cards img = "my-image.png" />
      </div>
  )
}

Карты.js:

export default function Card(props) {
  return (
    <div>
      <img src = {`../images/${props.img}`} />
    </div>
  )
}

В общем, я не могу поместить файл изображения в атрибут src в JSX, даже что-то вроде этого: <img src = "../images/my-image.png" />

Как конкретно это не удается? Что представляет собой результирующий элемент <img> в отображаемом HTML-коде в вашем браузере? Каков атрибут src этого элемента? Запрашивает ли браузер URL-адрес этого изображения? Какой ответ сервера?

David 16.03.2022 17:05

Импортируйте изображения в App.js и передайте их в качестве реквизита в Cards.js.

Abin Thaha 16.03.2022 17:12

@ Дэвид, я почти уверен, что расположение файла, который я передал в src, верное. для полученного элемента img проверьте сообщение еще раз, я его отредактировал

saleh 16.03.2022 17:15

@AbinThaha Но количество фотографий велико

saleh 16.03.2022 17:16

@saleh: Быть «почти уверенным» - хорошее начало, но на самом деле отладка и наблюдение будут гораздо полезнее. Используйте инструменты отладки вашего браузера, чтобы наблюдать за фактическими результатами. Какой точный HTML для этого <img>? Во вкладке сети средств отладки делается запрос на файл образа? Какой ответ сервера? Не предполагайте, отлаживайте и наблюдайте.

David 16.03.2022 17:17

@David, я проверил это в Dev Tools. src элемента img совпадает с моим местоположением изображения

saleh 16.03.2022 17:24

Вы должны переместить свои активы в общую папку, а не хранить их в папке src. Кроме того, вы можете использовать CDN для изображений, если они доступны. Пожалуйста, перейдите по этой ссылке: stackoverflow.com/questions/58553309/… . Ссылка на мой рабочий код: codeandbox.io/s/ревностный-borg-usgyqv

shalini mandal 16.03.2022 17:27

@shalinimandal Я сделал это, но выдает эту ошибку: Module not found: You attempted to import ../../public/images/airbnb-logo.png which falls outside of the project src/ directory. Relative imports outside of src/ are not supported.

saleh 16.03.2022 17:33

Пожалуйста, проверьте ссылку codeandbox в моем комментарии. Вам не нужно импортировать изображение. Используйте его так: <img width = "100" src = {/images/${props.img}} alt = "sample" />

shalini mandal 16.03.2022 17:36

@saleh, можно использовать функциональный подход для импорта всех (используя importAll) изображений.

Abin Thaha 16.03.2022 17:38

@shalinimandal большое спасибо, все сработало!! если хотите, опубликуйте его как ответ, чтобы принять ваш ответ.

saleh 16.03.2022 17:43

@saleh: И каков ответ сервера на запрос этого изображения? Вы продолжаете настаивать на том, что все правильно, вместо того, чтобы наблюдать за фактическими результатами. Ваш код наглядно работает как есть, при условии, что изображение действительно доступно там, где вы предполагаете.

David 16.03.2022 17:43
Поведение ключевого слова "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
12
54
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

привет, если вы хотите сделать URL-адрес изображения динамическим, вы можете написать его так:

<img src = {require(`../images/${image}`)} alt = "product" />

ссылка : Загружать изображения на основе динамического пути в ReactJs

Это не работает :[ В Dev Tools элемент src элемента img стал [object Module]

saleh 16.03.2022 17:29

Можете ли вы проверить работу importAll для вас? Проверьте ссылку ниже и подтвердите, работает ли это для вас.

Динамически импортировать изображения из каталога с помощью веб-пакета

В конце importAll у вас будет массив всех изображений, и в зависимости от ваших требований вы можете передать указанное изображение в качестве реквизита в Cards.js.

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

Вы должны переместить свои активы в общую папку, а не хранить их в папке src. Кроме того, вы можете использовать CDN для изображений, если они доступны.

Пожалуйста, перейдите по этой ссылке: Реагировать, загружать изображения локально из json

Ссылка на мой рабочий код: https://codesandbox.io/s/ревностный-borg-usgyqv

Это очень просто, если у вас есть «png», все, что вам нужно сделать, это импортировать «png» затем передайте его как опору. Ваша ошибка заключается в попытке использовать относительный путь:

это не правильно <img источник = {../images/${props.img}} />

Это правильный путь: <img src = {props.img}/>

Если вы хотите загрузить SVG, лучше всего преобразовать его в компонент React, подобный этому.

импортировать React из «реагировать»

функция экспорта по умолчанию MySVG() {

   return (
    <svg className = "leftArrowSvg" width = "6px" height = "10px" viewBox = "0 0 6 10" version = "1.1" xmlns = "http://www.w3.org/2000/svg">
        <g id = "Version-1" stroke = "none" strokeWidth = "1" fill = "none" fillRule = "evenodd" strokeLinecap = "round" strokeLinejoin = "round">
            <g id = "Replay-Meeting---Key-Word-Tag" transform = "translate(-37.000000, -40.000000)" stroke = "#ffffff" strokeWidth = "2">
                <g id = "Header" transform = "translate(0.000000, 24.000000)">
                    <g id = "Back-Button" transform = "translate(38.000000, 8.000000)">
                        <polyline id = "Arrow" transform = "translate(2.000000, 13.000000) rotate(-360.000000) translate(-2.000000, -13.000000) " points = "4 9 0 13 4 17"> </polyline>
                    </g>
                </g>
            </g>
        </g>
    </svg>
)

}

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