You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React中如何向onClick回调同时传递事件对象和自定义prop参数

实现方案

你只需要调整两处代码即可完成需求:

1. 调整Edit Load按钮的回调绑定

直接调用handleEdit(article.id)会导致组件渲染时就自动执行函数,需要用箭头函数包裹成点击回调,同时传递事件对象和文章ID:

<a
  href="/LoadManager"
  onClick={(e) => handleEdit(e, article.id)}
  className="theme_btn"
>
  Edit Load
</a>

2. 修改handleEdit函数接收ID参数

在弹窗打开逻辑中加入更新loadID的代码即可:

const [showEdit, setShowEdit] = useState("close");
const [loadID, setLoadId] = useState("1");

const handleEdit = (e, id) => {
    e.preventDefault();
    if (e.target !== e.currentTarget) {
      return;
    }

    switch (showEdit) {
      case "open":
        setShowEdit("close");
        break;
      case "close":
        setShowEdit("open");
        setLoadId(id); // 打开弹窗时同步更新当前编辑的文章ID
        break;
      default:
        setShowEdit("close");
        break;
    }
  };

可选优化

你可以把showEdit的状态改为布尔值简化代码,不需要额外做字符串判断:

const [showEdit, setShowEdit] = useState(false);
const [loadID, setLoadId] = useState("1");

// 给id设置默认值,兼容Modal内部关闭按钮不传id的场景
const handleEdit = (e, id = loadID) => {
  e.preventDefault();
  if (e.target !== e.currentTarget) return;
  setShowEdit(prev => !prev);
  // 仅打开弹窗时更新ID
  if (!showEdit) setLoadId(id);
};

内容的提问来源于stack exchange,提问作者Matthew Bussen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 22:18:04