Todos案例(二)02-删除任务—— 查找要删除的数据索引-item.id === id & 根据索引删除数组的元素-arr.splice(index, 1)

删除任务—— 查找要删除的数据索引-item.id === id & 根据索引删除数组的元素-arr.splice(index, 1)

  • 更加id删除数组中的数据

结构

<button className="destroy" onClick={this.handleDelete.bind(this, item.id)}></button>

方法

handleDelete = (id) => {
  // 控制删除操作
  let todos = [...this.state.todos]
  // 查找要删除的数据索引
  let index = todos.findIndex(item => {
    return item.id === id
  })
  // 根据索引删除数组的元素
  todos.splice(index, 1)
  this.setState({
    todos: todos
  })
}

删除历史记录效果

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现删除和更改完成状态,可以在函数组件中添加对应的处理函数。 删除可以使用数组的 filter 方法,删除指定 id 的 todo,然后更新组件状态。 更改完成状态可以通过遍历所有 todo,找到指定 id 的 todo,更改其 finished 属性为 true,其余 todo 的 finished 属性为 false,然后更新组件状态。 修改后的代码如下: ```jsx import &#39;./index.css&#39;; import dayjs from &#39;dayjs&#39;; import { useState } from &#39;react&#39;; export interface ITodo { id: string; content: string; finished: boolean; ctime: number; mtime: number; } export default function TodoList(props: { list: ITodo[] }) { const [todos, setTodos] = useState(props.list); function deleteTodo(id: string) { const newTodos = todos.filter((todo) =&gt; todo.id !== id); setTodos(newTodos); } function toggleFinished(id: string) { const newTodos = todos.map((todo) =&gt; { if (todo.id === id) { return { ...todo, finished: true, }; } else { return { ...todo, finished: false, }; } }); setTodos(newTodos); } return ( &lt;div className=&quot;section&quot;&gt; {todos.map((item) =&gt; { return ( &lt;div key={item.id} className={item.finished ? &#39;todo-item&#39; : &#39;todo-item .todo-finished&#39;} &gt; &lt;button onClick={() =&gt; toggleFinished(item.id)} className=&quot;iconfont icon-checkbox&quot; &gt;&lt;/button&gt; &lt;span className=&quot;todo-title&quot;&gt;{item.content}&lt;/span&gt; &lt;b&gt;{dayjs(item.ctime).format(&#39;MM月DD日 HH:mm:ss&#39;)}&lt;/b&gt; &lt;button onClick={() =&gt; deleteTodo(item.id)} className=&quot;iconfont icon-delete&quot; &gt;&lt;/button&gt; &lt;/div&gt; ); })} &lt;/div&gt; ); } ``` 其中,useState 函数返回的第一个元素是当前状态的值,第二个元素是更新状态的函数。调用更新状态的函数会重新渲染组件,并将新的状态值传递给组件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值