В моем JSX я сопоставляю массив объектов (импортированных из локального файла JS) для отображения набора значков с ключом, идентификатором и тегом alt.
Я использую хуки дляустановить состояние в пустую строку.Я хочу использовать событие onClick (переданное компоненту HeroIcons ), чтобы заменить это состояние идентификатором значка, по которому щелкнули (этот идентификатор является строкой).Вот код:
import React, { useState } from "react";
import HeroImages from "../images/HeroImages";
import HeroIcons from "../components/HeroIcons";
import HeroShowcase from "../components/HeroShowcase";
const Heroes = () => {
const [hero, currentHero] = useState("");
const setCurrentHero = e => {
currentHero(e.target.id);
console.log(hero);
};
return (
<div className="row">
<div className="col-heroes">
<ul className="hero-list">
{/* map function below */}
{HeroImages.map(({ id, src, altTag }) => (
<HeroIcons
key={id}
id={id}
src={src}
altTag={altTag}
setCurrentHero={setCurrentHero}
/>
))}
</ul>
</div>
<div className="col-showcase">
<HeroShowcase />
</div>
</div>
);
};
export default Heroes;
Внутри компонента heroIcons:
import React from "react";
const HeroIcons = props => {
return (
<li key={props.id} id={props.id} onClick={props.setCurrentHero}>
<img src={props.src} alt={props.altTag} />
</li>
);
};
export default HeroIcons;
При нажатии на значок (созданный функцией карты) идентификатор не регистрируется на консоли.Однако, когда я яростно щелкаю по нему много раз, иногда идентификатор регистрируется.Это дает мне подсказку, что это событие щелчка может вызывать перезапуск функции карты и препятствовать нормальному журналу консоли
Как я мог решить эту проблему?