[英]React toggle class in map fuction for one item(but when another will be put remove from anothers)
事實證明,日歷的過濾器是通過地圖完成的,共有7個對象是如何制作的,因此,在選擇假期時,只有假期使該類處於活動狀態,而當您單擊另一個過濾器時,另一個對象將變為活動狀態,而其他人則失去了資產類別? 有什么例子嗎? 我總是一次激活所有功能,然后只有第一個點擊(
{
_.map(this.firstRowEventTypes(), (item, key) =>
<button className="event-type-item" onClick={() => this.filterEvents(item.color)} key={key}>
<div className="event-type-circle" style={{backgroundColor: item.color}}/>
<div onClick={ () => this.setState({active: this.state.active === item.color ? null : item.color}) }
className={classnames("event-type-name", this.state.active === item.color && 'calendar-filter-active')}>{item.name}</div>
</button>
)
}
filterEvents(color) {
const events = [];
this.state.allEvents.map((val) => {
if (val.color === color) {
events.push(val);
}
});
this.setState({...this.state, events});
}
firstRowEventTypes() {
return [
{color: '#108aeb', name: 'Заседания', id: '1'},
{color: '#4caf50', name: 'Обучение', id: '2'},
{color: '#87cefa', name: 'Праздники', id: '3'},
{color: '#ff5252', name: 'Корпоративы', id: '4'},
{color: '#ab47bc', name: 'Спорт', id: '5'},
{color: '#e91e63', name: 'Культура', id: '6'},
//color: '#8d6e63', name: 'Другое'},
{color: '#d1d1d6', name: 'Другое', id: '7'},
//{color: '#108AEB', name: 'Корпоративный'},
//{color: '#87cefa', name: 'Гос. праздники'},
//{color: '#e91e63', name: 'Корп. мероприятия'},
//{color: '#8d6e63', name: 'Корп. развитие'},
//{color: '#ffa726', name: 'Спортивный'},
];
}
這是地圖上的項目,當我按下按鈕時,所有項目都切換新類(當我按下按鈕時,如何為一個項目切換活動類,然后從另一個項目中刪除?
您可以將數組索引key
或item.id
設置為活動按鈕
{
_.map(this.firstRowEventTypes(), (item, key) =>
<button className="event-type-item" onClick={() => this.filterEvents(item.color)} key={key}>
<div className="event-type-circle" style={{backgroundColor: item.color}}/>
<div onClick={ () => this.setState({active: item.id}) }
className={classnames("event-type-name", this.state.active === item.id && 'calendar-filter-active')}>{item.name}</div>
</button>
)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.