javascript - 如何在 React 中将 prop 和(事件)传递给 onClick 回调?
问题描述
我正在尝试添加一个“编辑加载”按钮,该按钮会在显示的每篇文章中添加。我需要按钮将 {article.id} 作为道具传递给被调用的 onClick 函数:handleEdit。因此,当 EditLoadModal 的 showEdit 切换为打开状态时,我可以使用 article.id 通过更新传递给 EditLoadModal 组件的 loadID 道具来提取有关“文章”的正确数据。
这样我就可以在 EditLoadModal.js 中使用该 ID 来提取相关数据并使用更新的信息将其写回数据库。
<EditLoadModal
loadID={loadID}
showEdit={showEdit}
handleClick={handleEdit}
/>
<Content>
{props.loading && (
<img alt="" src={require("./image/spinning-arrow.gif")} />
)}
{props.articles.length > 0 &&
props.articles.map((article, key) => (
<Article key={key}>
<SharedActor>
<a>
<img src={article.actor.image} alt="" />
<div>
<span>{article.actor.title}</span>
<span>
{article.actor.date.toDate().toLocaleDateString()}
</span>
<span>{article.id}</span>
</div>
</a>
<a
href="/LoadManager"
onClick={handleEdit}
className="theme_btn"
>
Edit Load
</a>
</SharedActor>
这是我的 handleEdit 功能
const [showEdit, setShowEdit] = useState("close");
const [loadID, setLoadId] = useState("1");
const handleEdit = (e) => {
e.preventDefault();
if (e.target !== e.currentTarget) {
return;
}
switch (showEdit) {
case "open":
setShowEdit("close");
break;
case "close":
setShowEdit("open");
break;
default:
setShowEdit("close");
break;
}
};
我在想我可以将 setLoadId(idProp) 添加到在 handleEdit(article.id) 内部传递的道具中。但无法弄清楚如何实现这一点。
也许有更好的方法?
谢谢你的帮助!
解决方案
<a
href="/LoadManager"
onClick={(e) => handleEdit(e, article.id)}
className="theme_btn"
>
Edit Load
</a>
基本上不将handleEdit直接传递给锚元素,而是有一个单独的回调来调用handleEdit。这样你就可以将任何你想要的参数传递给函数。
推荐阅读
- amazon-cloudformation - 每天安排一次 lambda 函数
- c - 浮点除法返回inf和有限值是什么情况?
- spring-boot - Spring Boot MongoRepository 中的“找不到类型类的 PersistentEntity”异常
- javascript - 在外部辅助函数中使用选择的选择器时的问题
- mysql - 分片Mysql数据库的最佳方法
- android - 片段 XXX {} 未与片段管理器关联
- php - 从某些手机获取登录和注册问题
- c# - 序列化 IList
到 MongoDB 作为 BsonString 而不是 LUUID - javascript - 如何在按键上更改选择的颜色
- ios - WKWebView - 不从 Web 视图加载页面