尝试定位一个映射列表项并在反应中更改其图标

Trying to target one single mapped list item and change its Icon in react

我正在尝试将轮廓心形图标更改为实心心形图标 onClick。我让它工作,但每张卡片上的所有红心都变了。

我知道我必须尝试使用​​ track.id 或某种 ID,但我不知道该怎么做?

如有任何帮助,我们将不胜感激。

谢谢!


const [clicked, setClicked] = useState(false);


return (
   {results.tracks.map(track => (
       
          <IonCard className="IonCard" key={track.id} color=''>
                   <IonItemGroup translucent>

                                {clicked?
                                    <IonItem lines="none"
                                       className="card-icons"
                                       key={track.id}
                                       onClick={() =>
                                         setClicked(false)
                                       }
                                     >
                                         <IonIcon
                                             className="card-icons"
                                             icon={heart}
                                             id="disLikeHeart"
                                             slot="start"
                                             value={track.id}
                                            />
                                <IonLabel>Discovered Music/>
                                        </IonItem>

                                        :

                                    <IonItem lines="none"
                                       className="card-icons"
                                       key={track.id}
                                       onClick={() =>
                                          setClicked(true)
                                        }
                                     >
                                          <IonIcon
                                             className="card-icons"
                                             icon={heartOutline}
                                             id="likeHeart"
                                             slot="start"
                                             value={track.id}
                                            />
                                   <IonLabel>Discovered Music</IonLabel>
                                     </IonItem>
                                    }

                 </>IonItemGroup translucent>
         </IonCard>

   ))}
)

更改您的 onClick 以将 clicked 设置为 ID

onClick = {()=>setClicked(track.id)}

然后检查id是否与点击的id匹配

{clicked === track.id ?
   <IonItem lines="none"
     className="card-icons"
     key={track.id}
     onClick={() =>
      setClicked(false)
     }
   >