如果你告诉我我的错误是什么,以及我应该如何通过id删除任务,我将不胜感激!

代码:

import { useState } from 'react';
import './App.css';

function App() {
  const [tasks, setTasks] = useState([ ]);
  const [newTask, setNewTask] = useState('');

  const handleChange = (event) => {
    setNewTask(event.target.value);
  }

  const handleAdd = () => {
    const task = {
      id: tasks.length === 0 ? 1 : tasks[tasks.length-1].id +1,
      name: newTask
      
    }
    const newArr = [...tasks, task]
    setTasks(newArr)
  }

  const handleDelete = (id) => {

    const checkFunction = () => {
      return tasks[tasks.length-1].id!=id
    };

    tasks.filter(checkFunction) 

  }
  
  return (
    <div className="App">

     <div className='add-task'>
      <input placeholder='What are you going to do today?' onChange={handleChange}></input>
      <button onClick={handleAdd}>Add Task</button>
     </div>
       
        
     <div className='tasks-list'>  
        {tasks.map((item) => {
          return (
            <div key={item.id}>
              <h1>{item.name}</h1>
              <button onClick={() => {handleDelete(item.id)}}>Delete</button>
            </div>
          )
        })}
     </div>
    </div>
  );
}

export default App;

我不知道如何使tasks.Filter()正常工作.它应该收到一个布尔值,对吗?但我不知道如何实现这一逻辑.提前谢谢!

推荐答案

如果你告诉我我的错误是什么,以及我应该如何通过id删除任务,我将不胜感激!

checkFunction几乎没有意义,因为它在filter的每次迭代中只签入一个静态元素(即tasks数组中的最后一项).

tasks[tasks.length-1].id!=id

此外,您不会使用新的筛选数组来更新状态.

tasks.filter(checkFunction) // filter does not mutate the original array

只需过滤tasks数组,在每次迭代中判断当前循环的元素id是否等于id参数,并将新值保存到状态.

const handleDelete = (id) => {
   setTasks(tasks.filter((task) => task.id !== id); 
}

https://codesandbox.io/s/sleepy-lovelace-q6dznc

Reactjs相关问答推荐

是否可能有不同的加载器用于路径有查询参数和没有查询参数,或者在React Router 6中添加它们时有条件地跳过一个加载器?

为多租户SSO登录配置Azure AD应用程序

如何在整个应用程序中显示通用弹出窗口中的点击事件

未定义发送的数据无法在reactjs中找到原因

为什么react日历时间轴项Renderprops 不能与useState挂钩一起使用?

关于forwardRef,我可以';我不理解第二个用例

Gitlab CI和VITE环境变量出现问题

使用 MUI 菜单时添加新 html 元素时布局意外滚动跳转

当从子状态更改复制时,react 父状态更改.我该如何防止这种情况?

如何在 React 中停止嵌套 Link 和 Button 组件的事件传播?

无法读取未定义的属性(阅读 'editQuoteModalShown')reactredux

React - 如何重定向页面以显示数据修改?

cypress `cy.now()` Type 'Promise' 没有调用签名

Stripe Checkout:是否可以创建不自动续订的订阅?

在 Spring Cloud Gateway 中运行的 React SPA 页面刷新出现白标错误

如何向 surveyjs 调查添加多个结尾?

如何禁用来自 React Native API 的某些特定项目的可touch 不透明度

如何使用react 路由将 url 参数限制为一组特定的值?

用 scss 覆盖 MUI

点击提交后自动添加#