Задать вопрос
Elena0394
@Elena0394

Как удалить элемент из массива, чтоб последующий элемент не получил данные первого?

Есть карточки. У каждой карточки есть свой стейт const [btn, setBtn] = useState(false); когда удаляю первую, то данные стейта переходят на вторую. Я полагаю, это из-за того, что когда в массиве карточек, удаляется первая, то у других меняется индекс. Как я раньше не сталкивалась с этим, не понятно. Может где ошибка?

Такой код:
const Card = ({ props, onDelete }) => {
  const [btn, setBtn] = useState(false);
  const handleButtonClick = () => {
    if (btn) {
      onDelete(props.keyId);
    } else {
      setBtn(true);
    }
  };
  return (
    <div key={props.keyId}>
      <button onClick={handleButtonClick}>{btn ? 'Удалить' : 'Сохранить'}</button>
    </div>
  )
}
export const Cards = () => {
  const [cards, setCards] = useState([]);
  const handleDeleteCard = (id) => {
    setCards(cards.filter(card => card.keyId !== id));
  }
  return (
    <>{cards.map(card => <Card props={card} onDelete={(id) => handleDeleteCard(id)} />)}</>
  )
}
  • Вопрос задан
  • 61 просмотр
Подписаться 1 Простой 7 комментариев
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
ITK academy Воронеж
от 50 000 до 90 000 ₽
IT ATLAS Москва
от 200 000 до 250 000 ₽