Точнее, вы неправильно используете splice в контексте хуков. Отметьте здесь , чтобы узнать, как работает монтаж.
Метод splice () добавляет / удаляет элементы в / из массива и возвращает удаленные элементы.
Итак, вы устанавливаете элемент, который пытаетесь удалить, в свою переменную. Чтобы сохранить исходный лог c, я предлагаю вам использовать временную переменную, например:
const removeCard = key => {
let tempCards = cards;
const removedCard = tempCards.splice(key, 0); // you can use the removed card if needed
setCards(tempCards);
}
И ключ параметра не определен, вы должны передать этот параметр своей функции, см. Документацию :
Для незначительного изменения вашего кода вы можете изменить это:
<Card {...card} key={index} handleClick={props.handleClick} />
на это:
<Card {...card} key={index} handleClick={() => props.handleClick(index)} />
EDIT: при использовании concat возможно, это добавление каждого элемента вашей новой карты. Попробуйте изменить это:
setCards(cards.concat(cardInfo));
на это:
setCards(cards.push(cardInfo));