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

如何将列表遍历中定义的key作为prop传递给Modal组件

问题根源

  1. React 中的key是框架内置的特殊属性,仅用于内部列表渲染的diff优化,无法作为普通prop被读取使用,就算你给li绑定了key也不能直接获取这个值做业务用途。
  2. 你的Modal组件写在reposit.map循环的外部,不在循环的作用域范围内,自然无法直接访问到循环内部的item变量,你写的my_key={key}里的key属于未定义变量,肯定传不了值。

解决方案

步骤1:新增状态存储当前选中的仓库ID

在你的组件原有状态基础上新增一个状态,用来记录用户点击的仓库ID:

const [selectedRepoId, setSelectedRepoId] = useState(null);

步骤2:修改列表点击事件,存入选中ID

修改循环内li的点击逻辑,点击时把当前项的ID存入新增的状态里:

{reposit.map((item) => (  
  <li 
    key={item.id} 
    onClick={() => {
      setSelectedRepoId(item.id);
      setOpenModal(true);
    }}
  >
    <i className="folder icon" /> {item.name}
  </li>
))}

步骤3:修改Modal传参

把存储的选中ID作为prop传给Modal即可:

{openModal && <Modal repo={reposit} my_key={selectedRepoId} setOpenModal={setOpenModal}/> }

补充说明

如果Modal内部需要用到当前点击仓库的完整信息,你也可以直接存储整个item对象,不用单独存ID:

// 存整个选中的仓库对象
const [selectedRepo, setSelectedRepo] = useState(null);

// 点击时赋值
onClick={() => {
  setSelectedRepo(item);
  setOpenModal(true);
}}

// 传参给Modal
<Modal selectedRepo={selectedRepo} setOpenModal={setOpenModal}/>

内容的提问来源于stack exchange,提问作者Mourad Over Flow

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 20:09:02