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

React中如何将点击的map渲染列表项赋值给指定state?

你可以通过给点击事件回调传参的方式拿到当前点击项的对应数据,修改方式如下:

方案1:直接传参(最常用)

首先修改selectStock函数,让它接收选中的股票数据作为入参:

const selectStock = (selectedStock)=>{
    setSearch("");
    setCurrentStock(selectedStock);
}

然后在map渲染li的时候,用箭头函数包裹点击事件,把当前遍历的stockname作为参数传给selectStock:

{stockNames.map((stockname) => {
  const { name, symbol} = stockname;
  return (
      <li className="displaySearch" onClick={() => selectStock(stockname)} key={symbol}>
          <p>{name} ({symbol})</p>
      </li>
  );
})}

方案2:自定义属性(适合超大量列表场景)

如果你的列表数据量很大,不想每次渲染都生成新的箭头函数,可以用自定义属性的方案实现:

  1. 给li添加自定义属性存储需要的字段
<li 
  className="displaySearch" 
  onClick={selectStock} 
  key={symbol}
  data-stock-name={name}
  data-stock-symbol={symbol}
>
  <p>{name} ({symbol})</p>
</li>
  1. 在selectStock中从事件对象里读取自定义属性的值
const selectStock = (e)=>{
  const selectedStock = {
    name: e.currentTarget.dataset.stockName,
    symbol: e.currentTarget.dataset.stockSymbol
  }
  setSearch("");
  setCurrentStock(selectedStock);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 16:42:07