I use react-slick carousel with custom controls. I want to add 'active' class only to element that is changes the slide (by onClick event). But in my case 'active' class toggles for all of them.
export default class ServicesSlider extends React.Component {
constructor(props) {
super(props)
this.changeSlide = this.changeSlide.bind(this)
this.state = {
isActive: false
}
}
changeSlide(e) {
this.setState({
isActive: !this.state.isActive
});
this.slider.slickGoTo(e);
}
render() {
return (
<div>
<section className="carousel-controls">
<div
onClick={() => this.changeSlide(0)}
className={this.state.isActive
? 'column' : 'column active'}>Slide one
</div>
<div
onClick={() => this.changeSlide(1)}
className={this.state.isActive
? 'column' : 'column active'}>Slide two
</div>
<div
onClick={() => this.changeSlide(2)}
className={this.state.isActive
? 'column' : 'column active'}>Slide three
</div>
<div
onClick={() => this.changeSlide(3)}
className={this.state.isActive
? 'column' : 'column active'}>Slide four
</div>
</section>
<Slider ref={c => this.slider = c}>
<div className="sliderItem">Slide 1</div>
<div className="sliderItem">Slide 2</div>
<div className="sliderItem">Slide 3</div>
<div className="sliderItem">Slide 4</div>
</Slider>
</div>
)
}
}
How to properly append class to a specific element in React?