reactjs - 我有多个 onClick 按钮,每当我单击 1 个按钮时,所有相同的按钮都会触发。反应
问题描述
我的所有组件都相同,这是一个示例。
const [show, setShow] = useState(false);
return (
<Box align="center">
<Box pb={2}>
<Box align="left">
<h1>UI Elements</h1>
</Box>
<Card>
<CardContent>
<h2 align = 'Left'><FormatColorFillIcon/> Colors</h2>
<hr/>
<App/>
</CardContent>
</Card>
<IconButton onClick={()=> setShow(!show)} aria-label="Hello sir" align = "right">
<CodeIcon/>
</IconButton>
{ show ?
<div><Paper className = {classes.paperColor}>
<SyntaxHighlighter classes = {classes.paperColor} language="javascript" style={docco} align = "left" style = {dracula}>
{codeString}
</SyntaxHighlighter>
</Paper>
</div> : null}
我想触发我点击的唯一按钮。对不起,我是 react js 的新手
解决方案
为每个按钮的 onClick 传递不同的函数(即 onIconButtonClick、onSubmitButtonClick 等)
<IconButton onClick={onIconButtonClick} aria-label="Hello sir" align = "right">
然后像这样定义函数:
const onIconButtonClick = () => {
setShow(!show)
}
const onSubmitButtonClick = () => {
//logic to submit
}
编辑 1
尝试这个
//for first icon button
<IconButton id="thing1" onClick={onIconButtonClick} aria-label="Hello sir" align = "right"></IconButton>
//for second icon button
<IconButton id="thing2" onClick={onIconButtonClick} aria-label="Hello sir" align = "right"></IconButton
const onIconButtonClick = (event) => {
switch(event.currentTarget.id) {
case "thing1":
setShowThing1(!showThing1);
break;
case "thing2":
setShowThing2(!showThing2);
break;
//...
}
}
{ showThing1 ?
<div>
<Paper className = {classes.paperColor}>
<SyntaxHighlighter classes = {classes.paperColor} language="javascript" style={docco} align = "left" style = {dracula}>
{codeString}
</SyntaxHighlighter>
</Paper>
</div> :
null}
推荐阅读
- firebase - 从 Google App Engine 标准环境使用 Cloud Firestore 需要什么
- react-native - onChange 文本未更新其状态
- c# - 预制件不会为不同的玩家同步
- c# - 异步等待方法调用外部资源或返回本地字符串
- c# - Azure 函数 SignalR | 协商功能 | 失败并显示 500 错误代码
- python - Message.content.split() Discord.PY
- javascript - 如何在滚动时让一个项目 div 移动而其他项目不移动?
- python - 为什么 while 循环中的缩进会产生问题?
- android - 当我使用 OOB 与蓝牙设备配对时,未来的通信是否加密?
- android - 文档中的某些字段可能为空,如果我尝试获取结果,App 会因为 nullPointerException 而崩溃