【发布时间】:2021-09-25 16:55:13
【问题描述】:
这几乎可以肯定是世界上最简单的事情,但不知何故在逃避我......
我有一个可供选择的 onClick 材质 UI 卡组件的选择,因此应该在选择它时添加一个类。出于某种原因,尽管所有示例似乎都表明应该删除该类,但该类的删除并不适用。我做错了什么?
为了简洁而删减...
const useStyles = makeStyles((theme: Theme) =>
createStyles({
cardSelected: {
backgroundColor: theme.palette.action.selected
},
})
);
export const Occasion = (): JSX.Element => {
const classes = useStyles();
const [selected, setSelected] = useState<string>('');
const handleSelect = (e: React.MouseEvent) => {
const s = e.currentTarget.getAttribute("data-option");
if (s) {
setSelected(s);
}
}
return (
<Grid item xs={12} sm={6} md={3}>
<CardActionArea className={classes.actionArea} onClick={handleSelect} data-option={occasion.id}>
<Card className={ selected === occasion.id ? classes.cardSelected : '' }>
<IconRounded className={classes.iconItem} color="secondary" />
<Typography variant="h5" component="h3">{ occasion.name } </Typography>
</Card>
</CardActionArea>
</Grid>
);
}
```
Clicking a card correctly adds the desired class but does not remove it from the other card items?
【问题讨论】:
-
occasion变量来自哪里?我没有看到它在任何地方定义。 -
我从中收集到的是,您正在映射一个数组并生成多个 Occasion 元素?如果是这样,您应该在组件树的较高位置存储哪个是活动的,最好是在您映射到数组的组件内部。