showHeartitems が一つの boolean 値になってると思いますが、これを配列またはオブジェクトにする必要があるでしょうね。
前提・実現したいこと
react mapの使い方
発生している問題・エラーメッセージ
特に無し
該当のソースコード
react
1-イメージはいいねボタンです。- 2 3{****map((photo, index) => 4---コード--- 5<FaHeart 6className="faheart" id="faheart" 7onClick={() => setShowHeartitems(!showHeartitems)} 8style={{color: showHeartitems ? "white" : "#E0306C"}}/> 9---コード--- 10)}[ 11 12ざっくりとですがこのような構造でjsonをmapで処理しています。 13 14そこで、記載させて頂いた<FaHeart...からのコードでハートのマークをタップするとハートの色が変わるというコードを書きたいと思っているのですが、現状1つのハートをタップすると処理されている全てのハートの色が変わってしまいます。 15keyを付けてみたり試行錯誤したのですが、現状維持で改善しませんでした。 16 17実現したいこととしては、 18・1つ1つハートが変わること 19・色が変わったハートのkey?index?を取得出来る事 20 21宜しくお願い致します。 22 23
試したこと
ここに問題に対して試したことを記載してください。
回答の程、ありがとうございます。
回答の通りboolean になっております。
具体的にどのようにすれば良いでしょうか?
お手数おかけしますが、初心者のため、お願い出来ると幸いです。
宜しくお願い致します。
具体的に答えるには、もう少し情報というか、前後のソースが欲しいですね。
map の前にある配列 (photo の配列?) の要素は固定ですか? 内容は URL か何か?
色が変わったハートのkey?index?を取得する際の key? index? はどうなって欲しいですか?
あと、const [showHeartitems, setShowHeartitems] = useState(false); ってことですよね。
承知致しました。
お手数おかけして申し訳ないです。
hoshi-takanori様の記述通り下記の通りに書いております。
const [showHeartitems, setShowHeartitems] = useState(false);
長くなりますが、下記がmapの省略無しのバージョンです。
<div id="second">
{filteredInfo1000.map((photo, index) =>
<div className="photo-box">
<img src={photo.photo} className="photo-items" />
<div className="flex-bottom">
<div className="heat-box">
<div className="heart-back" id="heart-back" onClick={() => setShowHeartitems(!showHeartitems)} style={{backgroundColor: showHeart ? "#E0306C" : ""}}>
{/* 本体 */}
<FaHeart className="faheart" id="faheart" onClick={() => setShowHeartitems(!showHeartitems)} style={{color: showHeartitems ? "white" : "#E0306C"}}/>
</div>
</div>
<a href={photo.link}><h3 className="photo-instagram"><FaInstagram className="Fainstagram" />Instagram</h3></a>
</div>
</div>
)}
</div>
jsonには、下記の3点の情報が書き込まれております。
{
key: 1,
photo: Photo1001,
link: "http://Instagram.com/....個人情報の為....",
},
特に手段等は選びません。(配列等の固定なども特に考えていません。)
回答1件
あなたの回答
tips
プレビュー