Подскажите как при клике на класс ("img"), выводить определеный класс info__skills
?
class Skills extends React.Component {
constructor(props) {
super(props);
this.state = { styles: [] };
}
render() {
return (
<section className="skills">
<div className='logo__skills'>
<div>
<img src={require("./../img/1200px-HTML5_logo_and_wordmark.png")} alt=""/>
</div>
<div>
<img src={require("./../img/css3-logo.png")} alt="" />
</div>
<div>
<img src={require("./../img/js-logo.png")} alt="" />
</div>
</div >
<div>
<div className="info__skills">
<p>Текст</p>
</div>
<div className="info__skills">
<p>Текст 2 </p>
</div>
<div className="info__skills">
<p>Текст 3 </p>
</div>
</div>
</section >
)}}
Грубый пример того, что Вы хотите. Навешиваем аттрибут на тэг (в моем примере это div
, а по факту может быть любой другой, img
, p
, и прочие), по которому будем кликать, а также обработчик handleClick
. В стейте сохраняем атррибут элемента, по которому кликнули, в своем примере я использовал id
. Затем в рендеринге в тернарке проверяем, по какому был клик и выводим тот, который нужно:
class Example extends React.Component {
constructor(props) {
super(props);
this.state = {
clicked: '',
};
this.handleClick = this.handleClick.bind(this);
}
handleClick(e) {
const { id } = e.currentTarget;
this.setState({ clicked: id });
}
render() {
const { clicked } = this.state;
return (
<div>
<div id='one' onClick={this.handleClick}>
<p> Image 1 </p>
</div>
<div id='two' onClick={this.handleClick}>
<p> Image 2 </p>
</div>
<div id='three' onClick={this.handleClick}>
<p> Image 3 </p>
</div>
<div>
<div className={clicked === "one" ? "info__skills_one" : "no_display"}>
<p>Текст 1</p>
</div>
<div className={clicked === "two" ? "info__skills_two" : "no_display"}>
<p>Текст 2 </p>
</div>
<div className={clicked === "three" ? "info__skills_three" : "no_display"}>
<p>Текст 3 </p>
</div>
</div>
</div>
)}
}
ReactDOM.render(
<Example />,
document.getElementById('container')
);
.info__skills_one {
color: red;
}
.info__skills_two {
color: green;
}
.info__skills_three {
color: orange;
}
.no_display {
display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id="container">
<!-- This element's contents will be replaced with your component. -->
</div>
Для того, чтобы не юзать тернарки - используйте очень удобную утилиту classnames
. Она позволяет использовать классы условно, например вот так:
classNames({ 'foo-bar': true }); // => 'foo-bar'
classNames({ 'foo-bar': false }); // => ''
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Подскажите как сделать, чтобы при наведении курсора мыши на ячейку таблицы, возникала подсказка, я нашел код в интернете
Всем приветРебят, помогите решить проблемку