Webpack - это умный инструмент.Одной из его сильных сторон является удаление мусорного кода / файлов из пакета.
Это означает, что если файл не импортируется с использованием import myFile from '../myPath/myFile.jpg';
или require ('../ myPath / myFile.jpg'); `он не будет частью окончательного комплекта.
В вашем случае вы не импортируете файл.Вместо этого вы создаете строковую переменную, которая ничего не значит для веб-упаковки.
В вашем случае могут работать различные параметры:
Опция 1: Предварительный импорт всехизображений и сопоставьте их в объекте:
import React, {Component} from 'react';
import image1 from '../assets/image1.png';
import image2 from '../assets/image2.png';
import image3 from '../assets/image3.png';
const imageTypes = {
image1,
image2,
image3,
}
export default class MyComponent extends Component {
constructor(props) {
super(props);
this.state = {
imageType: 'image1'
}
}
render() {
return (
<img src={imageTypes[this.state.imageType]} />
)
}
}
Вариант 2: Не рекомендуется - Используйте параметр require для динамического импорта файлов (могут потребоваться конфигурации веб-пакета для включения всех возможных требуемых изображений врабочий комплект):
class MyComponent {
constructor(props) {
super(props);
this.state = {
image: 'file1.png'
}
}
render() {
return (
<img src={require(`./assets/${this.state.image}`)} />
)
}
}
Вариант 3: Отправка BLOB-изображения (в base64) из API.
Я предлагаю использовать Вариант 1 или Вариант 3 , в зависимости от ваших требований, таких как: как часто будут изменяться / добавляться / удаляться изображения.Динамический импорт файлов из пакета ReactJS не является нормальным, и в вашем проекте может оказаться несуществующее изображение, запрошенное данными, поступающими из внешнего источника.
Для Вариант 2 у вас также могут возникнуть проблемы с настройкой веб-пакета, чтобы включить в пакет все изображения, которые вам, вероятно, понадобятся для рендеринга, даже если они не импортированы (жестко закодировано) где-то в файлах JS.Имейте в виду, что приложение React в работе становится набором статических файлов.Вам нужно обращаться с ними следующим образом.