如何在Reaction js中更改onClick按钮的背景色?
有多个按钮在使用和显示地图功能。 我想更改我单击的按钮的背景颜色。而其他人则想要它本来的样子。 同样,当我单击另一个按钮时,只更改该按钮的BG颜色。 有两个文件。一个组件id定义了使用map函数的按钮组件,另一个组件是按钮组件。 主要组件
state = {
categories: [],
selectedCategory: null,
value: 'test',
clicked1: false,
}
categorySelectedHandler = (id ,e) => {
this.setState({ selectedCategory: id });
}
const categoriesName = this.state.categories.map((category ,index) => {
// console.log("The current iteration is: " + index);
let visible_in_pricing_page = category.visible_in_pricing_page
if (visible_in_pricing_page) {
return <CategoryBtn
index = {index}
name={category.title}
key={category.id}
selectedId = {this.state.selectedCategory}
clicked={() => this.categorySelectedHandler(category.id)}
/>
}
});
CategoryBtn组件-
import React, { Component } from 'react';
import classes from './price-category-btn.css';
const CategoryBtn = props => {
return (
<div style={{display:"inline"}} >
<a>
<button
className= { classes.category_btn }
onClick={props.clicked}>{props.name}</button></a>
</div>
)
}
export default CategoryBtn;
解决方案
您正在将selectedId
道具传递给CategoryBtn组件,您可以利用它,也可以传入已经
const categoriesName = this.state.categories.map((category, index) => {
// console.log("The current iteration is: " + index);
let visible_in_pricing_page = category.visible_in_pricing_page
if (visible_in_pricing_page) {
return <CategoryBtn
index = {
index
}
name = {
category.title
}
key = {
category.id
}
{/** indicate this is the selected button */}
selected = {this.state.selectedCategory === category.id}
clicked = {
() => this.categorySelectedHandler(category.id)
}
/>
}
});
在CategoryBtn组件中,使用动态类返回按钮
<button
{/** use props.selected to dynamically set the class */}
className={`${classes.category_btn} ${props.selected}` ? classes.selectedCss : ''}
onClick={props.clicked}
>
{props.name}
</button>
在您的css模块中,您可以拥有背景色类
.selectedCss
{ background-color: lightblue;}
相关文章