javascript - 如何从 React 功能组件(待办事项列表)中的状态数组中过滤出一个项目
问题描述
当我单击它时,我试图让待办事项列表项消失。除了我的 deleteHandler 方法外,一切正常,我需要什么逻辑来过滤掉点击的项目?
import React, { useState } from 'react';
const ToDoList = () => {
const [list, setList] = useState([])
const [item, setItem] = useState("")
const submitHandler = (e) => {
e.preventDefault();
let newList = list.concat(item)
setList(newList);
console.log(item)
e.target.reset();
}
const deleteHandler = (index) => {
console.log(list[index])
// console.log(list)
const newList = list.filter((item) => list.indexOf(item) !== item[index])
console.log(newList)
setList(newList)
}
return(
<div>
<h1>To Do List:</h1>
<form onSubmit={submitHandler}>
<input type='text' onChange={(e)=>setItem(e.target.value)}></input>
<input type='submit' value='Add'></input>
</form>
{list.map((listItem, index) => (
<div key={index} >
<p className="toDoItem" onClick={()=>deleteHandler(index)}>{listItem}</p>
</div>
))}
</div>
)
}
export default ToDoList;
解决方案
这是您应该尝试的逻辑
const deleteHandler = (index) => {
// Assuming that the index means the index of an item which is to be deleted.
const newList = list.filter((item) => list.indexOf(item) !== index);
setList(newList);
}
推荐阅读
- java - 避免为每条记录重新初始化 groovy shell
- reactjs - axios调用成功响应后如何重定向
- sql - postgresql:在选择中使用聚合辅助函数的结果
- javascript - 如何从 jQuery 中的同名 div 中获取当前选定的 div 元素?
- python - 在基于多列的数据框中创建缓冲区 - Python
- amazon-web-services - 如何使用 Gitlab CI 和 aws cdk 实现 CD
- java - 将文件替换为由 mvn 包生成的 WAR 文件
- c - 可以在循环的括号内定义循环变量吗?
- ios - 添加 NavigationLink 时的 Swiftui 问题
- java - 如何实现 API 以返回嵌套的 JSON?