【发布时间】:2021-09-15 14:45:11
【问题描述】:
您好,我目前正在显示我的类别按钮。我希望当我单击一个按钮时,它会变暗并处于活动状态,当我再次单击它时,它将返回到它的默认样式并且不活动..
const useStyles = makeStyles((theme) => ({
button: {
margin: theme.spacing(0.5),
border: "1px solid black",
borderRadius: "1em",
boxShadow: "1px 1px",
},
scrollMenu: {
overflow: "auto",
whiteSpace: "nowrap",
},
buttonActive: {
backgroundColor: "gray",
},
}))
const CategoryList = ({ categories }) => {
const classes = useStyles()
const [myFilters, setMyFilters] = useState({
filters: { category: [] },
})
const [limit, setLimit] = useState(10)
const [skip, setSkip] = useState(0)
const [location, setLocation] = useState({
long: 120.9868052,
lat: 14.6038269,
})
const [ active, setActive ] = useState(false)
// const handleClick = (e, categoryId) => {
// e.preventDefault()
// console.log(categoryId)
// }
const loadFilteredResults = (newFilters) => {
console.log(newFilters)
getProductsByCategory(location.long, location.lat, skip, limit, newFilters)
}
const clickFilters = (filterBy, categoryId) => {
console.log("Product", filterBy, categoryId)
const newFilters = {
...myFilters,
filters: {
[filterBy]: [...myFilters.filters[filterBy], categoryId],
},
}
loadFilteredResults(newFilters.filters)
setMyFilters(newFilters)
setActive(!active)
}
useEffect(() => {
loadFilteredResults(myFilters.filters)
}, [])
return (
<div className={classes.scrollMenu}>
{categories.map((category) => {
return (
<Button
key={category._id}
className={active ? classes.button : classes.buttonActive}
onClick={() => clickFilters("category", category._id)}
>
{category.name}
</Button>
)
})}
</div>
)
}
export default CategoryList
但是发生的情况是,当我单击一个按钮时,所有其他按钮都会变暗。
然后当我再次单击它时,所有内容将再次处于默认状态。我怎样才能实现我单击的每个按钮都会变暗,然后当我再次单击它时它又会变回白色。
【问题讨论】:
标签: css reactjs react-hooks