Загрузка изображения в реакции

Я загружаю меньше кода, потому что я думаю, что это достаточно
Спросите, если нужно больше, чтобы найти ошибку

async componentDidMount(){


var image = this.props.data.img
console.log(this.props.data.img == './../images/thumbnails/g.png') // true
console.log(this.props.data.img === './../images/thumbnails/g.png') // true
console.log(typeof(this.props.data.img))
await import(image)
            .then((res)=>{
                console.log(res)
                this.setState({img:res})
            })
            .catch((e)=>{
                console.log(this.props.data.img)
                console.log(e)
            })
}

Я пытаюсь импортировать изображение.
Когда я использую import('./../images/thumbnails/g.png) затем он запускается успешно, но когда я передаю то же значение, что и реквизиты, и пытается импортировать его, то через ошибку (модуль не найден).
Я записываю значения, и все получаются, чтобы быть правдой, что средняя строка и строка по реквизитам одинаковы, тогда почему я получаю 2 разных поведения?

1 ответ

Вы должны установить file-loader в вашем приложении, затем используйте изображение в ваших файлах jsx/js/css.

установить file-loader используйте команду ниже:

npm установить загрузчик файлов --save-dev

И обнови свой webpack по следующему коду:

module.exports = {
  module: {
    rules: [
      {
        test: /\.(png|jpg|gif)$/,
        use: [
          {
            loader: 'file-loader',
            options: {}
          }
        ]
      }
    ]
  }
}

Затем импортируйте ваш файл

import img from './file.png'

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

<img src={require(this.props.name)} alt=''/>

или же

<img src={require('../assets/images/yourimage.png')} alt=''/>

или же

<img src={require(`../assets/images/${this.props.name.toLowerCase()}.png`)}/>
Другие вопросы по тегам