reactjs - 在点击处理程序中获取属性值?
问题描述
如何获取eventKey
属性的值并将其传递给下一行中的函数?
<Accordion.Toggle
as={Card.Header}
eventKey="2"
data-foo="zzz"
onClick={(e) => CardClick(e.currentTarget.getAttribute('eventKey') ?? "unknown")}> // unknown. Desired value: 2
在这个问题中解决了以下问题。但是,在我的情况下,我需要获取的属性不以“data-”为前缀。
作品:
<Accordion.Toggle
as={Card.Header}
eventKey="2"
data-foo="zzz"
onClick={(e) => CardClick(e.currentTarget.getAttribute('data-foo') ?? "unknown")}> // zzz
不工作:
<Accordion.Toggle
as={Card.Header}
eventKey="2"
data-foo="zzz"
onClick={(e) => CardClick(e.currentTarget.getAttribute('data-eventKey') ?? "unknown")}> // unknown
完整的组件:
<Card>
<Accordion.Toggle as={Card.Header} eventKey="0" className="faq-header" onClick={(e) => CardClick(e.currentTarget.getAttribute('eventKey') ?? "unknown")}>
<span className="rh5">Some text</span>
</Accordion.Toggle>
<Accordion.Collapse eventKey="0">
<Card.Body>
<span className="rh6">
Some text
</span>
</Card.Body>
</Accordion.Collapse>
</Card>
解决方案
正如@DrewReese 在评论中解释的那样,不可能eventKey
从 DOM 元素 ( e.target
) 中获取 ,因为它永远不会传递给 DOM。
我们应该从那里得到它props
。我们确实需要eventKey
在三个地方使用:作为 the和 the中的eventKey
道具和我们的. 但是当它被抽象为组件 prop 时,我们只需要声明特定的事件键,即。, 一次。Toggle
Collapse
onClick
eventKey="2"
import React from "react";
import { Accordion, Card } from "react-bootstrap";
interface RenderCardProps {
eventKey: string;
CardClick: (key: string) => void;
/** add whatever else you need */
}
const RenderCard = ({ eventKey, CardClick }: RenderCardProps) => {
return (
<Card>
<Accordion.Toggle
as={Card.Header}
eventKey={eventKey}
className="faq-header"
onClick={() => CardClick(eventKey)}
>
<span className="rh5">Some text</span>
</Accordion.Toggle>
<Accordion.Collapse eventKey={eventKey}>
<Card.Body>
<span className="rh6">Some text</span>
</Card.Body>
</Accordion.Collapse>
</Card>
);
};
export default () => <RenderCard CardClick={console.log} eventKey="2" />;
为了将其用作实际组件,您可能也想制作ToggleContents
和进入道具。CardContents
推荐阅读
- python - 我怎样才能让我的代码工作,一旦我运行它,我就一直没有定义名称
- regex - 阿帕奇位置匹配
- javascript - 如何在 PayPal 智能按钮交易中发送自定义数据字段
- javascript - 如何访问使用 = 而不是键值对的对象中的属性
- bitbucket - 生成发行说明 (CHANGELOG.md)
- php - 空或空数组值不过滤或从数组列表中删除
- javascript - 在反应应用程序中导入 jQuery 时,如何在内联脚本中使用 jQuery?
- javascript - 如何在 JavaScript 中使用 Mongoose 动态更新文档?
- typescript - 打字稿:将类型约束为数组
- python - 找到GPU后,如何强制张量流忘记GPU?