javascript - 禁止按钮单击父元素
问题描述
我正在构建一个 Material UI 应用程序。我有一个卡片组件,我需要让它可点击。但是右上角还有一个按钮,可以在点击时编辑卡片。问题是,当我单击该按钮时,它将处理 2 个操作:
- 按钮本身调用的编辑操作
- 点击卡片
这是一段代码:
<CardActionArea href={`/${item.name}`}>
<Card key={index}>
<CardHeader
action={
<Fab color="secondary" onClick={handleClick}>
<EditIcon color={"primary"} />
</Fab>
}
/>
<CardContent className={classes.cardContent}>
<Avatar className={classes.avatar} alt={item.name} src={item.avatar} />
<Typography variant="h6" color="textSecondary">
Card description
</Typography>
</CardContent>
</Card>
</CardActionArea>
我怎么能做到这一点?
解决方案
在卡片组件中,您可以创建单击卡片和内部按钮时要运行的两个功能:
const onCardClick = () => {
// your code here
}
const onButtonClick = () => {
onCardClick()
// your code here
}
在 Card.jsx 中渲染卡片内的按钮时添加onButtonClick
功能
<MyButton onClick={onButtonClick}
然后在你的按钮组件中,你给它一个 onClick 道具:
const MyButton = (props) => {
<Button onClick={prop.onClick}>title</Button>
}
推荐阅读
- facebook-instant-games - 如何尝试在 Facebook Instant Game SDK 上邀请好友?(ShareAsync 不工作)
- ios - 如何从表格视图导航到 XIB 文件
- google-fabric - crashlyticsUploadSymbols 与 muti apk build_code 错误
- r - 从 R 中的文本中提取评级和相应的日期
- sql-server - 当查询文本具有特定数量的字符时 SQL Server 性能变慢
- ios - 自定义 Cocoapod 总是返回“No such module XXX”
- recursion - 超出堆栈限制(0.2Gb)...可能无限递归(循环):
- javascript - jQuery 将元素 id 转换为逗号分隔的字符串
- sql-server - 查询获取一对多和多对一员工项目关系
- android - android:图形内存极高