Похоже, что ваша основная проблема в том, что вы не разрушаете свой реквизитный объект:
const GameCards = cards => {
Вам необходимо изменить это значение на:
const GameCards = ({ cards }) => {
Также удалите вещи useMemo
. Это не помогает вам здесь. Вот уменьшенная версия вашего кода. Я изменяю свойство background-color
вместе с классом, но концепция та же самая. Надеюсь, это поможет!
РЕДАКТИРОВАТЬ: Также обратите внимание, как в примере, ваш лог c в настоящее время меняет все элементов. Если вы хотите изменить класс только для одного элемента, вы можете использовать метод передачи индекса (или, еще лучше, ID!). Вот пример:
const [cardimgclass, setCardimgclass] = useState();
...
const onClick = (e, item) => setCardimgclass(item._id)
...
<div onClick={e => onClick(e, item)} />