У меня есть реактивный проект, где у меня есть компонент, который в настоящее время показывает изображение. Также есть кнопка:
import React from 'react';
class Pokemon extends React.Component {
state = {
text: "./blank.png"
};
handleButton = (e) => {
console.log("e: ",e);
this.setState( {
text: "./pikachupic.png"
});
};
render() {
return (
<div class="container-fluid" >
<div class="row">
<div class="col" style={{ background: "gray", color: "white" }}>
<button onClick={this.handleButton}>Show Pokemon</button>
</div>
<div class="col" style={{ background: "black", color: "white" }}>
<h3>Pokemon Description</h3>
<img src={require("./pikachupic.png")}/>
</div>
</div>
</div>
);
}
}
export default Pokemon;
Однако я хочу начать с чистого изображения, и как только пользователь нажмет кнопку, появится изображение покемона. Итак, у меня есть состояние, которое начинается с «./blank.png» и, как только кнопка нажимается, она меняется на «./pikachupic.png». Я пытался изменить следующую строку
<img src={require("./pikachupic.png")}/>
К этому:
<img src={require(this.state.text)}/>
Но он бросил ошибки после того, как я сделал изменение.
Ошибка: не удается найти модуль "./blank.png"
Каков правильный синтаксис для присвоения значения this.state.text источнику тега img?
2 ответа
Попробуйте вместо этого:
<img src={require( `${ this.state.text }` )} />
Или это:
<img src={require( "" + this.state.text )} />
Так как require требуется строка, поэтому вы не можете передать необработанное значение
Все, что вам нужно сделать, это использовать значение состояния в качестве значения img src, я переименовал переменную состояния извините, но мой OCD не мог допустить, чтобы она была просто «текстовой»: D
import React from 'react';
class Pokemon extends React.Component {
state = {
imgSrc: "./blank.png"
};
handleButton = (e) => {
console.log("e: ",e);
this.setState( {
imgSrc: "./pikachupic.png"
});
};
render() {
return (
<div class="container-fluid" >
<div class="row">
<div class="col" style={{ background: "gray", color: "white" }}>
<button onClick={this.handleButton}>Show Pokemon</button>
</div>
<div class="col" style={{ background: "black", color: "white" }}>
<h3>Pokemon Description</h3>
<img src={this.state.imgSrc}/>
</div>
</div>
</div>
);
}
}
export default Pokemon;
Похожие вопросы
Новые вопросы
html
HTML (язык гипертекстовой разметки) — это язык разметки для создания веб-страниц и другой информации, отображаемой в веб-браузере. Вопросы относительно HTML должны включать минимальный воспроизводимый пример и некоторое представление о том, чего вы пытаетесь достичь. Этот тег редко используется отдельно и часто в паре с [CSS] и [JavaScript].