我能够推送值,但不确定过滤的错误在哪里.如果我使用的过滤方法错误或是其他原因,有人能指导我吗?

import { useState } from 'react';

const App = () => {
const [task,setTask] = useState('');
const [list,setList] = useState([]);

const submitHandler = (event) => {
  event.preventDefault();
  const newTask = { id: new Date().getTime().toString(), title: task };
      setList([...list, newTask]);
      setTask('');
}

const clearList = () => {
  setList([]);
}

const removeItem = (id) => {
    const filteredList = list.filter(item => item.id !== id);
    setList(filteredList);
}

  return <div>
          <h2>To do list!</h2>
          <form onSubmit={submitHandler}> Enter Task! 
          <input type='text'
            onChange = {(event) => {setTask(event.target.value)}}>
          </input>
          </form>
          <div>
          {list.map((obj) => (
          <h4 key={obj.id}>{obj.title}<button onClick={removeItem}>X</button></h4>))}
          <button onClick={clearList}>Clear All</button>
          </div>
          </div>
}

export default App

推荐答案

目前,您正在使用onClick={removeItem}调用removeItem,这将向您的removeItem函数传递一个事件对象,而不是您的函数期望接收的id.您需要将单击时要删除的对象的id传递给removeItem方法,这可以通过向其中传递obj.id来完成:

...
<button onClick={() => removeItem(obj.id)}>X</button>
...

Javascript相关问答推荐

react/redux中的formData在expressjs中返回未定义的req.params.id

点击按钮一次有文本出现和褪色,而不是点击两次?(html,CSS,JavaScript)

单击ImageListItemBar的IconButton后,在Material—UI对话框中显示图像

在286之后恢复轮询

在open shadow—root中匹配时,使用jQuery删除一个封闭的div类

Angular 形式,从DOM中删除不会删除指定索引处的内容,但会删除最后一项

AddEventListner,按键事件不工作

我想使用GAS和HTML将从Electron 表格中获得的信息插入到文本字段的初始值中

在不扭曲纹理的情况下在顶点着色器中旋转UV

Node.js API-queryAll()中的MarkLogic数据移动

有没有办法更改Chart.js 3.x.x中主要刻度的字体?

在没有任何悬停或其他触发的情况下连续交换图像

如何在Java脚本中并行运行for或任意循环的每次迭代

调用特定数组索引时,为什么类型脚本不判断未定义

将以前缓存的 Select 器与querySelector()一起使用

如何按区域进行过滤并将其从结果数组中删除?

使用JAVASCRIPT-使用If和Else If多次判断条件-使用JAVASRIPT对象及其属性

JS:inline date子串.

JSdiscord机器人为什么不工作前缀?如何决定与discord机器人的问题?

面临错误:未捕获RangeError-超出最大调用堆栈大小