Почему я не могу удалить задачу из списка задач?

Что я должен сделать, чтобы удалить элемент из моего списка дел? Что я сделал не так?

Вот мой код

function App1() {
  const myInputValue = useRef();
  const [todo, setToDo] = useState([]);
  const addItem = (event) => {
    event.preventDefault();
    const id = uuid();
    setToDo([
      ...todo,
      {
        id: id,
        name: myInputValue.current.value,
      },
    ]);
    myInputValue.current.value = "";
  };
  const removeItem = e => {
        const data = todo.filter(el => el.e !== e);
        setToDo(data);
  };
  const listItems = todo.map((element) => (
    <li key = {element.id}>
      {element.name}
      <button>Done</button>
      <button onClick = {() => removeItem(element.id)}>Delete</button>
    </li>
  ));

  return (
    <div>
      <input ref = {myInputValue}></input>
      <button onClick = {addItem}>Add</button>
      <ul>
        {listItems}
      </ul>
    </div>
  );
}

export default App1;

Что мне следует изменить в моей функции removeItem? Где я делаю ошибку? Пожалуйста помоги

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
48
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Я не уверен в этом, но когда вы добавляете элемент, вы добавляете объект со следующими ключами (идентификатор и имя), так почему, когда вы вызываете removeItem, вы тестируете с помощью elemnt.e; ты не это хотел написать? :

todo.filter(el => el.id !== e)

вместо этого:

todo.filter(el => el.e !== e)

омг .... я такой глупый .... большое спасибо, братан. Может быть, это потому, что я так хочу спать....

N_D 21.03.2022 20:42

Нет проблем, братан, когда ты устал, отдохни. У меня случилось так, что я застрял с точкой с запятой, забытой в PHP-коде, потому что я был в полусне x)

The Dnino 22.03.2022 10:46

Попробуй это

const removeItem = e => {  //e is your id so you compare with other obj ids 
    const data = todo.filter(el => el.id !== e); 
    setToDo(data);

};

Да, я уже это понял, большое спасибо

N_D 21.03.2022 20:43

Вы передаете имя элемента вместо самого элемента.

<button onClick = {() => removeItem(element.name)}>Delete</button>

Может быть, было бы лучше, если бы вы сравнили идентификатор задачи в своей функции фильтра. Попробуйте изменить функцию removeItem, чтобы она была такой.

const removeItem = e => {
        const data = todo.filter(el => el.id !== e.id);
        setToDo(data);
  };

Другие вопросы по теме