Я пытаюсь загрузить изображение динамически на основе реквизита в реагирующем компоненте.Как загрузить изображения асинхронно с webpack
До сих пор это то, что я придумал:
MyComponent.jsx(использует ES7 property initializers syntax)
//...
const getIcon = (iconName) => {
require.ensure([], require => {
cb =() => require(`../../images/icons/${iconName}`)
})
}
class MyComponent extends Component {
state = {
categoryIcon: getIcon.bind(this, this.props.icon)
};
render() {
let iconStyle = {backgroundImage: `url('${this.state.categoryIcon}')`}
return(
<div className={styles.categoryIcon}
style={iconStyle}
></div>
)
}
}
Исполнительное производит эту ошибку:
GET http://localhost:3000/function%20()%20%7B%20[native%20code]%20%7D 404 (Not Found)
Итак, у меня вопрос состоит из нескольких частей.
- Загрузка изображений асинхронно возможно с помощью
require.ensure()
с WebPack?- Если да, то как?
- Если нет ...
- Могу ли я загружать изображения асинхронно с WebPack?
- Если да, то как?
- На основании моего примера есть что-нибудь еще, что я должен рассмотреть?
Кажется, что функция обратного вызова передается вместо выполнения. Я попытался добавить оператор возврата 'возврата Cb()' , а также оберточную функцию обратного вызова в iife 'центибар = (() => требуется (' ../../ изображения/значки/$ {} IconName .svg'))() ' оба производят ту же ошибку –
я не определен, если я это сделать: ' componentWillMount = (this.setState ({categoryIcon: this.getIcon (this.props.icon)})) getIcon = (iconName) => { require.ensure ([], require => { require ('../../ images/icons/$ {iconName} .svg') }) }; ' –