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

React中选中NFT后如何取消选中并清空状态

实现NFT的选中/取消选中切换功能

你只需要修改onClick事件的逻辑,增加一个判断:如果当前点击的NFT已经处于选中状态(通过metadata.id匹配),就清空状态;否则将该NFT设为选中项。

修改后的代码如下:

{ownedNfts?.data?.map((nft) => (
        <div
          onClick={() => {
            // 判断当前点击的NFT是否已选中
            if (selectedNFT?.metadata?.id === nft.metadata.id) {
              setSelectedNFT(undefined); // 取消选中,清空状态
            } else {
              setSelectedNFT(nft); // 设置为选中项
            }
          }}
          className={`flex flex-col space-y-2 card min-w-fit border-2 bg-gray-100 
          ${
            nft.metadata.id === selectedNFT?.metadata?.id
              ? "border-black scale-105 z-50"
              : "border-transparent"
          }`}
          key={nft.metadata.id}
        >

逻辑说明:

  • 点击NFT时,先对比当前NFT的metadata.id和selectedNFT的metadata.id
  • 如果两者一致,说明是再次点击已选中的NFT,调用setSelectedNFT(undefined)清空选中状态
  • 如果不一致,就把当前NFT设置为选中项,保持原有的选中功能

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 15:01:00