Я бы предложил переместить <i className="fas fa-align-left" data-align="Left" onClick={this.handleAlign}></i>
в отдельный компонент и иметь состояние , удерживая его, а затем отобразить это состояние для рендеринга.
this.state ={
Alignments:[], // Please add all your allingments here
Colors:[], // Please add all your Color here
Sizes:[], // Please add all your Size here
activeAlingment:0,
activeColor:0,
activeSize:0
}
handleSetActiveAllingment = (index) =>{
this.setState({activeAlingment:index})
}
handleSetActiveColor = (index) =>{
this.setState({activeColor:index})
}
handleSetActiveSize = (index) =>{
this.setState({activeSize:index})
}
Пожалуйста, используйте это состояние для сопоставления этого состояния для создания Компонентов.
this.state.Alignments.map((alingment,Index)=>{
isactive = this.state.activeAlingment == Index ? "active" : "";
return <Alingment activeClass={isactive} clickHandler={() => this.handleSetActiveAllingment(Index)}>
});
this.state.Colors.map((color,Index)=>{
isactive = this.state.activeColor == Index ? "active" : "";
return <Colors activeClass={isactive} clickHandler={()=>this.handleSetActiveColor(Index)}>
});
Таким образом, ваши компоненты будут для повторного использования иВы также достигнете того, что вам нужно.